Prova
stringOne = stringTwo
ifTrue: [myNumber := 20]`
Non credo che avete bisogno di parentesi quadre nella prima riga
Trovato grande spiegazione. Tutta thing is here
In Smalltalk, booleani (vale a dire, vero o falso) sono oggetti: in particolare, sono istanze della classe base astratta booleano, o meglio dei suoi due sottoclassi vero e falso. Quindi ogni booleano ha tipo True o False e nessun dato membro effettivo. Bool ha due funzioni virtuali, ifTrue: e ifFalse:, che prendono come argomento un blocco di codice. Sia True che False annullano queste funzioni; La versione di True di ifTrue: chiama il codice che è passato e la versione di False non fa nulla (e viceversa per ifFalse :). Ecco un esempio:
a < b
ifTrue: [^'a is less than b']
ifFalse: [^'a is greater than or equal to b']
Quelle cose tra parentesi quadre sono essenzialmente funzioni anonime, tra l'altro. Tranne che sono oggetti, perché tutto è un oggetto in Smalltalk. Ora, quello che succede è che chiamiamo il metodo "<", con argomento b; questo restituisce un valore booleano. Chiamiamo i suoi ifTrue: e ifFalse: metodi, passando come argomenti il codice che vogliamo venga eseguito in entrambi i casi. L'effetto è uguale a quello del codice Ruby
if a < b then
puts "a is less than b"
else
puts "a is greater than or equal to b"
end
Grazie il mio compagni di Android. Questo era il problema – user69514
Woof - Non sono così familiare w Smalltalk ma mi ricordo che le parentesi quadre sono per la valutazione e se valuti l'operatore '=' non avrai un booleano :) – Bostone
sigh - volevo aggiungere l'esempio di codice qui, ma era malformato Dimenticalo, ho aggiunto una risposta ... – blabla999