このメソッド(SOMベンチマークからの)は、Smalltalkのローカルでない戻り値に依存します。それらなしで同じ結果を生み出す方法はありますか?Smalltalk:非ローカルリターンを避けるのに最適ですか?アルゴリズムの書き換え
placeQueenNonLocalReturn: c
1 to: 8 do: [ :r |
(self row: r column: c)
ifTrue: [
queenRows at: r put: c.
self row: r column: c put: false.
(c = 8) ifTrue: [ ^true ].
(self placeQueen: c + 1) ifTrue: [ ^true ].
self row: r column: c put: true ] ].
^false
!
注(別の質問ですが関連しています):このコードを変更することは、発信者と着信音については何も知らずに可能ですか?私はそれが目的のより良い理解を与えるべきだと思いますが、方法は私の質問に関して自己完結していてはなりませんか?
「方法は自己完結型ではありませんか?」重要な部分は、インターフェース(コードから明らかなもの)と、「偽」と「真」の取り消しの意味を説明することです。これは特に明確ではありません。 –