如何在 smalltalk 中循环 "continue"
How to "continue" in a loop in smalltalk
如果我小于 5,我有以下代码'continue':
1 to: 10 do: [ :i |
i < 5 ifTrue: [ continue ].
'Square of i = ', (i * i) printNl.
]
上面代码中的 'continue' 显然不起作用。我知道 exit
可以用来跳出循环。但是如何continue
?感谢您的帮助。
在你的情况下,你可以简单地使用 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 中,如果您使用正确的模数,它可能会起作用。%
returns 复数:
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
)。
如果我小于 5,我有以下代码'continue':
1 to: 10 do: [ :i |
i < 5 ifTrue: [ continue ].
'Square of i = ', (i * i) printNl.
]
上面代码中的 'continue' 显然不起作用。我知道 exit
可以用来跳出循环。但是如何continue
?感谢您的帮助。
在你的情况下,你可以简单地使用 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 中,如果您使用正确的模数,它可能会起作用。%
returns 复数:
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
)。