Coleccion De Palabras Que Guarden Valores Numericos?


Objetivo: Coleccion De Palabras Que Guarden Valores Numericos?
Buenas, como hago para guardar estos datos:

lo que quiero es guardar en una key "BANANA" cuantas bananas tengo
o en una key "FRUTILLAS" cuantas frutillas tengo.

no se como se hace esto pues la key seria un string y el dato de tipo integer alguna orientación?

Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Hola v3ctor.

El dato es del tipo Variant.

Public Sub Main()
Dim frutas As New Collection

frutas.Add(2, "bananas")

'Quiero añadir otra banana
Print frutas["bananas"] + 1

Print frutas["bananas"]
'Oops!

frutas.Add(frutas["bananas"] + 1, "bananas")

Print frutas["bananas"]

End


No se si sera la única forma de hacerlo.
Pero lo cierto es que no hemos añadido a la colección otra fruta que llama banana y una cantidad, hemos sustituido
el elemento de la colección con la clave banana. Es lo que parece.

Pon un Stop después de Print frutas["bananas"]
Y ahora comprueba la colección frutas.

Saludos

Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Otro ejemplo:

Public Sub Main()

Dim frutas As New Collection

frutas["bananas"] = 0

Cambiar(frutas, "bananas", 1)
Mostrar_Coleccion(frutas)

Cambiar(frutas, "bananas", 4)
Mostrar_Coleccion(frutas)

End

Public Sub Mostrar_Coleccion(una_coleccion As Collection)

Dim valor As Integer

For Each valor In una_coleccion
Print una_coleccion.Key, valor
Next

End

'Lo cambio con la sugerencia de Shordi
Public Function Cambiar(una_coleccion As Collection, clave As String, valor As Integer) As Collection

If una_coleccion.Exist(clave) Then
una_coleccion[clave] += valor
Return una_coleccion
Else
Print "No existe la clave " & clave & " en la colección"
Endif

End


Vale, habría que poner el nombre de la función a Sumar y no Cambiar...

Saludos

última edición por Shell el Viernes, 07 Noviembre 2014, 18:18; editado 3 veces
Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Citar:

Print frutas["bananas"] + 1


Eso no añade otra banana, sólo imprime la suma

futas["bananas"] += 1
print frutas["bananas"]

Por cierto, una curiosidad con las colecciones: no es necesario usar el método Add que funciona my bien, faltaría más, basta con
dim frutas as new collection
frutas["bananas"] = 2
print frutas["bananas"]
'si un elemento no existe, es igual a nulo
print frutas["platanos"]

Perfil MP  
Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Shordi:

Pero entonces, no sumaría. Solo asignas un valor a una clave de la colección.

Pues si, es correcto. Suma perfectamente.

jeje, me acuerdo de un cliente que se le fue la cabeza, comía frutas..perdón, "futa, futa.. decía el" y se tiro por el balcón...era un primero, pero no
le quedo una muela viva. Las muelas salieron disparadas por multitud de sitios.

Saludos

última edición por Shell el Viernes, 07 Noviembre 2014, 18:02; editado 2 veces
Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Citar:
Pues si, es correcto. Suma perfectamente.


mmmmmm curioso....

Perfil MP  
Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Shordi:

Cuando lo leía, lo estaba escribiendolo en Gambas.

Ahora lo curioso es: Si la función Cambiar devuelve una colección y no se ha asignado a ninguna variable, como es que se ha cambiado el valor de la colección frutas con la clave "bananas"

Ni que fuese un alias de Python.
Necesito café!.


Saludos

Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Citar:
Si la función Cambiar devuelve una colección y no se ha asignado a ninguna variable, como es que se ha cambiado el valor de la colección frutas con la clave "bananas"


Bueno eso es correcto. Una colección es un objeto y los objetos se pasan siempre por referencia, como los arrays, etc. Cambiar algo en una función produce el efecto de cambiarlo en el original.
Si lo que quieres es preservar el original tienes que hacer esto:

Public Function Cambiar(una_coleccion As Collection, clave As String, valor As Integer) As Collection
dim col as collection
col=una_coleccion.copy
If una_coleccion.Exist(clave) Then
col[clave] += valor
Return col
Else
Print "No existe la clave " & clave & " en la colección"
Endif

End

Perfil MP  
Objetivo: Re: Coleccion De Palabras Que Guarden Valores Numericos?
Además de colecciones, se pueden crear estructuras (o incluso clases, usando propiedades), para guardar "estructuras de datos complejos":

http://cursogambas.blogspot.com.es/2012/08/estructuras.html


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4001s (PHP: -77% SQL: 177%)
Consultas SQL: 47 - Debug off - GZIP Activado