Я работаю над простой настольной игрой в Pharo, и у меня на доске есть метод, добавляющий объекты в ячейку. Ячейки — это просто словарь точек на объектах.
В рамках метода я хотел, чтобы Point был больше нуля, но меньше ширины и высоты доски, другими словами, он должен быть на доске. Как лучше всего это сделать?
Моя текущая попытка выглядит так:
at: aPoint put: aCell
((((aPoint x > self numberOfRows)
or: [aPoint x <= 0])
or: [aPoint y > self numberOfColumns ])
or: [aPoint y <= 0])
ifTrue: [ self error:'The point must be inside the grid.' ].
self cells at: aPoint put: aCell .
Какая-то шепелявость со всеми этими скобками! Но я не могу использовать короткое замыкание or:
без закрытия каждого выражения, чтобы оно оценивалось как логическое, а не как блок (или как сообщение or:or:or:or:
). Вместо этого я мог бы использовать бинарный оператор |
и отказаться от короткого замыкания, но это не кажется правильным.
Итак, как правильно справиться с этим в стиле Smalltalk?