条件运算符,添加后检查结果的简化方法
Conditional operator, simplified way to check result after addition
我正在为朋友开发一款游戏,在 class 的统计数据构建部分,我有一个部分根据 class(战士、法师等),但最终统计数据不能小于零。
目前有这个:
this.stats[i] += type[i];
if(this.stats[i] < 0) {
this.stats[i] = 0;
}
很好,有点多余,但我想知道是否可以在一行中完成此操作。我对此表示怀疑,但我很好奇我是否错了。
类似于:
this.stats[i] += type[i] < 0 ? // etc;
但我知道在将变量添加到当前 int
之前,这只是 运行 条件。另外,是的,只使用整数,不使用浮点数或字符串或其他任何东西,这些都在其他地方处理。
你可以写在一行中,但它不会很简单,因为你必须检查 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;
赋值如+=
return赋值。如果运算符优先级不符合您的要求,只需添加括号即可。
if((this.stats[i] += type[i]) < 0) this.stats[i] = 0;
但可能 Math.max
更清楚:
this.stats[i] = Math.max(0, this.stats[i] + type[i]);
我正在为朋友开发一款游戏,在 class 的统计数据构建部分,我有一个部分根据 class(战士、法师等),但最终统计数据不能小于零。
目前有这个:
this.stats[i] += type[i];
if(this.stats[i] < 0) {
this.stats[i] = 0;
}
很好,有点多余,但我想知道是否可以在一行中完成此操作。我对此表示怀疑,但我很好奇我是否错了。
类似于:
this.stats[i] += type[i] < 0 ? // etc;
但我知道在将变量添加到当前 int
之前,这只是 运行 条件。另外,是的,只使用整数,不使用浮点数或字符串或其他任何东西,这些都在其他地方处理。
你可以写在一行中,但它不会很简单,因为你必须检查 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;
赋值如+=
return赋值。如果运算符优先级不符合您的要求,只需添加括号即可。
if((this.stats[i] += type[i]) < 0) this.stats[i] = 0;
但可能 Math.max
更清楚:
this.stats[i] = Math.max(0, this.stats[i] + type[i]);