たすけて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]].
すげー!