所以我正在写我的俄罗斯方块版本。这是我想做的:
screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);
有没有办法只用一行来做到这一点?
所以我正在写我的俄罗斯方块版本。这是我想做的:
screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);
有没有办法只用一行来做到这一点?
一些选项浮现在脑海中:
在知道状态和颜色的任何类中编写一个方法:
// Implicitly sets color to red. Consider using an enum for statuses
screen[0][1].setStatus(1);
编写一个同时接受状态和颜色参数的方法:
screen[0][1].setColorAndStatus(Color.RED, 1);
MakesetColor
和setStatus
(和其他 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);
可能的方法可以是其他人给出的任何人:
也试试
(screen[0][1].setColor(Color.RED)).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);
如果您能够编辑课程,那么到目前为止我们还有很多其他方法:)