だから私は自分のバージョンのテトリスを書いています。これが私がやりたいことです:
screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);
これを1行だけで行う方法はありますか?
だから私は自分のバージョンのテトリスを書いています。これが私がやりたいことです:
screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);
これを1行だけで行う方法はありますか?
いくつかのオプションが思い浮かびます:
ステータスと色の両方を知っているクラスにメソッドを記述します。
// Implicitly sets color to red. Consider using an enum for statuses
screen[0][1].setStatus(1);
状態と色の両方のパラメーターを受け入れるメソッドを作成します。
screen[0][1].setColorAndStatus(Color.RED, 1);
Make setColor
and setStatus
(およびその他のセッター) が返さthis
れるので、それらを連鎖させることができます。
screen[0][1].setColor(Color.RED).setStatus(1);
「すべてを 1 つのステートメントに」という考えを捨てて (これはあなたが本当に意図したことだと思います。本当に望むなら、1 行に 2 つのステートメントを入れることができますが、そうするように勧めているわけではありません)、実際には3 つのステートメントを書きます。
Tile tile = screen[0][1];
tile.setColor(Color.RED);
tile.setStatus(1);
これを達成するのと同じように、メソッドsetColor()
を変更しsetStatus()
て を返すことができますthis
。何かのようなもの:
public MyObj setColor(int color) {
this.color = color;
return this;
}
しかし、他の方法が同じアプローチに従わない限り、これは良いパターンとは思えません。
直接の可能性。
タイプのオブジェクトを返すsetColorメソッドの場合、次のscreen[0][1]
ことができます
screen[0][1].setColor(Color.RED).setStatus(1);
setColor メソッドの戻り値の型が void の場合。それなら唯一の方法は
screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);
クラスを編集できる場合は、これまでのところ他にも多くの方法があります:)
可能な方法は、他の人によって与えられた誰でもかまいません:
も試してみてください
(screen[0][1].setColor(Color.RED)).setStatus(1);