簡體   English   中英

如何在Smalltalk中循環“繼續”

[英]How to “continue” in a loop in smalltalk

我有以下代碼,如果我小於5,我想“繼續”:

1 to: 10 do: [ :i |
    i < 5 ifTrue: [ continue ].
    'Square of i = ', (i * i) printNl.
]

上面代碼中的“繼續”顯然不起作用。 我知道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中,如果使用正確的模,它可能會起作用。 %返回復數):

    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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM