所以我正在编写我的俄罗斯方块版本。这就是我想做的事情:
screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);
有没有办法只在一行中做到这一点?
答案 0 :(得分:3)
我想到了一些选择:
在任何知道状态和颜色的类中写一个方法:
// Implicitly sets color to red. Consider using an enum for statuses
screen[0][1].setStatus(1);
编写一个接受状态和颜色参数的方法:
screen[0][1].setColorAndStatus(Color.RED, 1);
让setColor
和setStatus
(以及其他设置者)返回this
,以便将它们链接起来:
screen[0][1].setColor(Color.RED).setStatus(1);
放弃“一体化声明”的想法(这就是我认为你真正的意思 - 如果你真的想要,你可以在一行上放两个陈述,但我不是建议您这样做并实际编写三个语句:
Tile tile = screen[0][1];
tile.setColor(Color.RED);
tile.setStatus(1);
答案 1 :(得分:0)
为了完成此操作,您可以更改方法setColor()
和setStatus()
以返回this
。类似的东西:
public MyObj setColor(int color) {
this.color = color;
return this;
}
但我不会这样做,它看起来不是一个好的模式,除非其他方法采用相同的方法。
答案 2 :(得分: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);
如果你能够编辑课程,到目前为止我们还有很多其他方法:)
答案 3 :(得分:0)
可能的方法可以是其他人给出的:
也试试
(screen[0][1].setColor(Color.RED)).setStatus(1);