私は Pharo で単純なボード ゲームに取り組んでおり、オブジェクトをセルに追加するメソッドをボードに持っています。セルは、オブジェクト上のポイントの単なる辞書です。
メソッドの一部として、Point が 0 よりも大きく、ボードの幅と高さよりも小さい必要があること、つまり、実際にボード上にある必要があることを強制したかったのです。これを行う最善の方法は何ですか?
私の現在の試みは次のようになります。
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 .
それらすべての括弧を使って、一種のLisp-y!しかし、各式を閉じずに短絡を使用することはできないためor:
、ブロック (またはor:or:or:or:
メッセージ) ではなくブール値として評価されます。代わりに二項演算子を使用して|
ショート サーキットを回避することもできますが、それは正しくないようです。
では、これを処理する適切な Smalltalk 風の方法は何でしょうか?