Autore Topic: [RISOLTO] variabile multivalore  (Letto 352 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
[RISOLTO] variabile multivalore
« il: 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?
« Ultima modifica: 21 Agosto 2014, 17:13:43 da allegfede »
se corri, morirai stanco (motto degli sniper)

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: variabile multivalore
« Risposta #1 il: 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
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: variabile multivalore
« Risposta #2 il: 21 Agosto 2014, 17:13:23 »
esattamente quel che mi serviva!

mittico!!!!

grazie
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: [RISOLTO] variabile multivalore
« Risposta #3 il: 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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »