Trate
stringOne = stringTwo
ifTrue: [myNumber := 20]`
No creo que necesita corchetes en la primera línea
encontrado gran explicación. thing is here
En Smalltalk, booleanos (es decir, verdadero o falso) son objetos: específicamente, son instancias de la clase base abstracta Boolean, o más bien de sus dos subclases True y False. Por lo tanto, cada booleano tiene un tipo True o False, y no tiene datos de miembros reales. Bool tiene dos funciones virtuales, ifTrue: y ifFalse :, que toman como argumento un bloque de código. True y False anulan estas funciones; La versión de True de ifTrue: llama al código que ha pasado, y la versión de False no hace nada (y viceversa para ifFalse :). Aquí hay un ejemplo:
a < b
ifTrue: [^'a is less than b']
ifFalse: [^'a is greater than or equal to b']
Esas cosas entre corchetes son funciones esencialmente anónimas, por cierto. Excepto que son objetos, porque todo es un objeto en Smalltalk. Ahora, lo que sucede allí es que llamamos a un método "<", con el argumento b; esto devuelve un booleano. Llamamos a sus métodos if True: e ifFalse: pasando como argumentos el código que queremos ejecutar en cualquier caso. El efecto es el mismo que el del código de Ruby
if a < b then
puts "a is less than b"
else
puts "a is greater than or equal to b"
end
Gracias a mi compañero Android. Ese fue el problema. – user69514
Woof - No estoy familiarizado con Smalltalk pero recuerdo que los corchetes son para evaluación y si evalúas el operador '=' no obtendrás un boolean :) – Bostone
suspiro - quería agregar el ejemplo de acode aquí, pero estaba mal formateado. Olvídalo, agregué una respuesta ... – blabla999