1

所以我正在写我的俄罗斯方块版本。这是我想做的:

screen[0][1].setColor(Color.RED); screen[0][1].setStatus(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);
    
  • MakesetColorsetStatus(和其他 setter)返回this,以便您可以将它们链接起来:

    screen[0][1].setColor(Color.RED).setStatus(1);
    
  • 放弃“all in one statement”的想法(这是我认为你真正的意思——如果你真的想要的话,你可以将两个语句放在一行上,但我不建议你这样做)并实际写三个语句:

    Tile tile = screen[0][1];
    tile.setColor(Color.RED);
    tile.setStatus(1);
    
于 2014-04-12T06:19:03.387 回答
0

可能的方法可以是其他人给出的任何人:

也试试

(screen[0][1].setColor(Color.RED)).setStatus(1);
于 2014-04-12T06:24:37.560 回答
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 回答