Этот метод (из тестов SOM) опирается на Smalltalk не локальные возвращения. Есть ли способ получить такие же результаты без них?Smalltalk: лучше всего избегать нелокальных возвратов? Алгоритм rewrite
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
!
Примечания (другой вопрос, но связанное): Можно ли изменить этот код, не зная ничего о звонивших и вызываемых методах? Я думаю, это должно дать лучшее понимание цели, но не должен ли этот метод быть автономным в отношении моего вопроса?
«но не должен ли этот метод быть автономным?» Важная часть описывает интерфейс --- какие аргументы он принимает (что очевидно из кода), и каково значение повторения 'false' vs' true', что не особенно ясно. –