1

だから私は自分のバージョンのテトリスを書いています。これが私がやりたいことです:

screen[0][1].setColor(Color.RED); screen[0][1].setStatus(1);

これを1行だけで行う方法はありますか?

4

4 に答える 4

3

いくつかのオプションが思い浮かびます:

  • ステータスと色の両方を知っているクラスにメソッドを記述します。

    // Implicitly sets color to red. Consider using an enum for statuses
    screen[0][1].setStatus(1); 
    
  • 状態と色の両方のパラメーターを受け入れるメソッドを作成します。

    screen[0][1].setColorAndStatus(Color.RED, 1);
    
  • Make setColorand 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);
    
于 2014-04-12T06:19:03.387 に答える
0

これを達成するのと同じように、メソッドsetColor()を変更しsetStatus()て を返すことができますthis。何かのようなもの:

public MyObj setColor(int color) {
    this.color = color;
    return this;
}

しかし、他の方法が同じアプローチに従わない限り、これは良いパターンとは思えません。

于 2014-04-12T06:18:49.917 に答える
0

直接の可能性。

  • はい

タイプのオブジェクトを返す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);

クラスを編集できる場合は、これまでのところ他にも多くの方法があります:)

于 2014-04-12T06:19:07.827 に答える
0

可能な方法は、他の人によって与えられた誰でもかまいません:

も試してみてください

(screen[0][1].setColor(Color.RED)).setStatus(1);
于 2014-04-12T06:24:37.560 に答える