Truco Para Funciones Que Deben De Devolver Varios Valores


Subject: Truco Para Funciones Que Deben De Devolver Varios Valores
Hola, os traigo un "truco" (por decirlo de alguna manera), por si necesitais que una función os devuelva varios valores.

El truco es simplemente usar el tipo "collection" como retorno de la función.

Os dejo este ejemplo, donde podeis ver como se devuelve el valor de dos variables "pieza" y "fuerza", desde una función:

Public Sub Form_Open()

Dim valores As Collection
Dim pieza As String
Dim fuerza As Integer

valores = calculo()

pieza = valores["pieza"]
fuerza = valores["fuerza"]

Print "El valor de pieza: " & pieza & "\n" & "El valor de fuerza: " & fuerza

End

Public Function calculo() As Collection

Dim coleccion As New Collection

coleccion.Add("torre", "pieza")
coleccion.Add(3, "fuerza")

Return coleccion

End


Saludos

Nota:
Otra forma que he usado, antes de "descubrir" el tipo collection, era crear una clase con varias propiedades y usar esta clase como objeto que retorno, pero me parece más "simple" el uso de collection.

Subject: Re: Truco Para Funciones Que Deben De Devolver Varios Valores
A mí me gusta más devolver un variant. Si la función que has puesto falla al obtener el valor o el nombre de la pieza, ¿Qué devuelves? Con Variant puedes devolver null, false, la colección vacía e, incluso, el mensaje de error. Puedes retornar un Variant[] que contenga todos esos elementos, etc. etc. Mucho más flexible desde mi punto de vista.
La única, y nada desdeñable, ventaja de devolver una colección, tal como yo lo veo, es la claridad del código en la función que la llama... pero un variant puede contener una colección también.


Saludos.

Profile PM  
Subject: Re: Truco Para Funciones Que Deben De Devolver Varios Valores
No olvidar que usar Variant tiene su coste.Naturalmente hay casos que es mejor, como este.

En este caso las piezas tienen un valor que están fijados al comenzar,¿no ?.
A menos que por error cuando se lo dimos, hubiésemos cometido algún error.

La idea de Julio no es para nada mala.Algo confusa al principio.
La pieza tiene un nombre y un valor.

Hay muchas formas de poder hacerlo.
Dos arrays. Cadenas y entero

Un array Variant. [Pieza,valor,otrapieza,valor...]

Se ve claramente la flexibilidad de la colección.En este caso recuerdas fácilmente el nombre, por que son pocas.

Ea, se acabo el recreo..

Saludos


Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.3285s (PHP: -79% SQL: 179%)
SQL queries: 22 - Debug Off - GZIP Enabled