Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 21 Agosto 2014, 13:13:35

Titolo: [RISOLTO] variabile multivalore
Inserito da: allegfede - 21 Agosto 2014, 13:13:35
una domanda.

mi servirebbe di definire una variabile che possa avere piu' valori (ovviamente) ma solo tra' quelli indicati.

una specie di boolean ma con piu' di 2 stati.

in pratica vorrei definire una variabile in un modo simile:

public Stato as Tupla[playing,stopped,paused,unknown]

questo sarebbe utile per evitare una variabile numerica in cui ci si debba ricordare a cosa corrisponda 0,1,2, etc e magari per avere un completamento automatico dall'IDE di gambas in fase di aggiornamento della variabile :D

esiste qualcosa di predefinito?
Titolo: Re: variabile multivalore
Inserito da: sotema - 21 Agosto 2014, 14:36:38
potresti usare una enumerazione,

 
Codice: [Seleziona]
Private Enum playing=0, stopped=1, paused=2, unknown=3
che può essere scritta anche:

Codice: [Seleziona]
Public | Private Enum playing, stopped, paused, unknown

potrai quindi usare l'equivalente letterario per indicare il numero.

http://gambaswiki.org/wiki/cat/enumdecl (http://gambaswiki.org/wiki/cat/enumdecl)
Titolo: Re: variabile multivalore
Inserito da: allegfede - 21 Agosto 2014, 17:13:23
esattamente quel che mi serviva!

mittico!!!!

grazie
Titolo: Re: [RISOLTO] variabile multivalore
Inserito da: vuott - 21 Agosto 2014, 18:19:36
...oltre all'ottimo suggerimento di sotema, potremmo anche pensare ad una soluzione (seppure meno breve e sintetica rispetto a quella dell'Enumerazione) mediante una Struttura:  ;D
Codice: gambas [Seleziona]
Public Struct Status_S
  playing as Byte
  stopped As Byte
  paused As Byte
  unknown As Byte
End Struct

Public Sub Main()

  Dim status As New Status_S

' Assegnamo a ciascun membro della variabile del tipo della nostra Struttura il proprio valore:
With status
  .playing = 0
  .stopped = 1
  .paused = 2
  .unknown = 3
End With

 ... etc

' Effettuiamo una veloce verifica ad esempio sul 3° membro:
  Print status.paused

End