如果我小于5,我有以下代码要“继续”:
1 to: 10 do: [ :i |
i < 5 ifTrue: [ continue ].
'Square of i = ', (i * i) printNl.
]
上面代码中的'continue'显然不起作用。我知道exit
可用于打破循环。但是如何continue
?感谢您的帮助。
答案 0 :(得分:0)
您可以使用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
消息时将退出接收器块(在Pharo中返回nil
)。