Italian Select case

Fulvio75

Well-Known Member
Licensed User
Ciao è possibile utilizzare il Select case con And?
Ho provato e pur non segnalandomi l'errore nel codice quando lo scrivo, in debug va in crash

es:
B4X:
dim x as string
dim y as int

Select x

case "Mele" and y = 0

case "Pere" and y = 1

case "Banane" and y = 0

case else

end select
 

Daestrum

Expert
Licensed User
Longtime User
B4X:
    Dim x As String = "Mele"
    Dim y As Int = 1

    Select (True)
        Case x="Mele" And y = 0
            Log("Mele  , y=0")
        Case x="Pere" And y = 1
            Log("Pere  , y=1")
        Case x="Banane" And y = 0
            Log("Benane  , y=0")
        Case Else
        Log("Unknown " & x & ", " & Y)
    End Select
 

Fulvio75

Well-Known Member
Licensed User
B4X:
    Dim x As String = "Mele"
    Dim y As Int = 1

    Select (True)
        Case x="Mele" And y = 0
            Log("Mele  , y=0")
        Case x="Pere" And y = 1
            Log("Pere  , y=1")
        Case x="Banane" And y = 0
            Log("Benane  , y=0")
        Case Else
        Log("Unknown " & x & ", " & Y)
    End Select
ok funziona grazie
 

emexes

Expert
Licensed User
Longtime User
Se non vi dispiace che la gente si prenda gioco della vostra programmazione, allora forse:
B4X:
Dim x As String
Dim y As Int

Select x & "/" & y
    Case "Mele/0"
    Case "Pere/1"
    Case "Banane/0"
    Case Else
End Select
La "/" può essere un carattere diverso, o uno spazio (o anche non essere usata, assumendo che la String x non finisca mai con una cifra o un segno meno).
 

LucaMs

Expert
Licensed User
Longtime User
Se non vi dispiace che la gente si prenda gioco della vostra programmazione, allora forse:
B4X:
Dim x As String
Dim y As Int

Select x & "/" & y
    Case "Mele/0"
    Case "Pere/1"
    Case "Banane/0"
    Case Else
End Select
La "/" può essere un carattere diverso, o uno spazio (o anche non essere usata, assumendo che la String x non finisca mai con una cifra o un segno meno).
Più che altro non vorrei prendere in giro me stesso. Se dovessi scrivere codice in quel modo, dopo una settimana, rileggendo, mi servirebbe... un interprete ?

Comunque, "bel" trucco.
 

emexes

Expert
Licensed User
Longtime User
Se dovessi scrivere codice in quel modo, dopo una settimana, rileggendo, mi servirebbe... un interprete

La penso allo stesso modo riguardo alla struttura "al rovescio" di Select True.

Per evitare imbarazzi, forse dovremmo tornare ai BASIC (vecchio stile):

B4X:
If      x = "Mele"   And y = 0 Then
Else If x = "Pere"   And y = 1 Then
Else If x = "Banane" And y = 0 Then
Else
End If
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Penso che la cosa più importante sia fare funzionare la cosa.
Poi ognuno deciderà il proprio metodo.
Però questa discussione è interessante.
 

LucaMs

Expert
Licensed User
Longtime User
Per evitare imbarazzi, forse dovremmo tornare ai BASIC (vecchio stile):
Penso che la cosa più importante sia fare funzionare la cosa.
Non sono molto d'accordo.
Usare gli Else IF penso sia scomodo e meno "leggibile" della Select-Case.
Che la cosa funzioni, se hai fretta, potrebbe essere la "giusta" discriminante, ma la "leggibilità" e "manutenibilità" sono molto importanti.
La soluzione di @Daestrum è quella da usare, in questo caso, senza dubbio.
 

Fulvio75

Well-Known Member
Licensed User
Per me è più comodo il Select True e mi viene più comodo anche da leggere:
se le due condizioni case sono verificate esegui il codice sotto case
 
Top