我正在为一个朋友制作游戏,并且在该类的统计建筑部分我有一个部分,根据类(战士,法师等)为统计数据添加基本修饰符但是最终的统计数据不能小于零。
目前有这样的:
this.stats[i] += type[i];
if(this.stats[i] < 0) {
this.stats[i] = 0;
}
哪个好,有点不情愿,但我想知道是否有可能在一行中做到这一点。我对此表示怀疑,但我很想知道自己是否错了。
类似的东西:
this.stats[i] += type[i] < 0 ? // etc;
但我知道只有在将变量添加到当前int
之前才会运行条件。此外,是的,仅使用整数,没有浮点数或字符串或其他任何东西,在其他地方处理。
答案 0 :(得分:4)
+=
之类的作业会返回指定的值。如果运算符优先级不是您想要的,只需添加括号。
if((this.stats[i] += type[i]) < 0) this.stats[i] = 0;
但可能Math.max
更清楚:
this.stats[i] = Math.max(0, this.stats[i] + type[i]);
答案 1 :(得分:1)
你可以写一行,但这不会很简单,因为你必须检查this.stats[i] + type[i]
的总和
this.stats[i] = (this.stats[i] + type[i]) < 0 ? 0 : (this.stats[i] + type[i]).
所以,你可以在这里添加变量
var sum = this.stats[i] + type[i];
this.stats[i] = sum < 0 ? 0 : sum;