В вашем случае вы можете просто использовать ifFalse:
:
1 to: 10 do: [ :i |
i < 5 ifTrue: [
"Any code you need"
] ifFalse: [ 'Square of i = ', (i * i) printNl ].
]
Следующий код, вероятно, будет работать только в Pharo. (он не будет работать в GNU Smalltalk, в Smalltalk / X он может работать, если вы используете правильный модуль. %
возвращает комплексное число):
1 to: 10 do: [ :i |
[ :continue |
i % 5 = 0 ifTrue: [
Transcript show: i; cr.
continue value ].
Transcript
show: i;
show: ', '.
] valueWithExit.
]
valueWithExit
реализация в Pharo:
valueWithExit
self value: [ ^nil ]
Значение:
Получатель должен быть блоком из одного аргумента. Когда он оценивается и передается блок, когда отправляется сообщение value
, он выходит из блока получателя (возвращая nil
в Pharo).