たすけてSmalltalker

授業のネタにSmalltalkを使っているのですが、なんか冗長な気がします。
内容としては単に「2以上の素数を求める」だけなのですが、

  • そもそも「一つも引っ掛からなかったら何かする」制御構文ってあるのかな?
  • C言語のbreakにあたるものがないのでなんか無駄に回している

詳しい方、助けてください。

moded := Set new.
(2 to: 100) do:[:arg | |isadd|
	isadd:=true.
	moded do: [ :mod|
		((arg \\ mod) ==0 ) ifTrue: [isadd:= false] ].
	isadd ifTrue: [moded add: arg]]

……シンタックスハイライトにSmalltalkは対応してないんね……。してました。「st」です。

というわけでコメントで教えていただいたCollection>>detect:ifNoneを使って。

moded:=Set new.
(2 to:100) do: [ :arg |
	moded detect: [ :e | arg \\ e == 0]
		ifNone: [ moded add: arg]].

すげー!