在禅宗的Python中,蒂姆·彼得斯说明了这一点Flat is better than nested..如果我已正确理解,那么在Python中,这个:
<statement-1> if <condition> else <statement-2>
Run Code Online (Sandbox Code Playgroud)
通常比这更受欢迎:
if <condition>:
<statement-1>
else:
<statement-2>
Run Code Online (Sandbox Code Playgroud)
但是,在其他语言中,我被告知不要嵌套三元运算符,而是使用传统的运算符 if...else.那么,我的问题是我应该使用这个:
(<statement-1> if <condition-1> else <statement-2>) if <condition-2> else <statement-3>
Run Code Online (Sandbox Code Playgroud)
要么
if <condition-2>:
if <condition-1>:
<statement-1>
else:
<statement-2>
else:
<statement-3>
Run Code Online (Sandbox Code Playgroud)
?特别是如果陈述和条件很长,第一行需要拆分?
我正在为Android手机开发基于回合制的RPG游戏,我正在试图弄清楚如何处理具有超出损害的额外变量的攻击.例如,当目标具有燃烧效果时,我希望火焰攻击额外造成10%的伤害.我有点不确定如何以有效的方式执行此操作,以及允许将来添加到我的状态/攻击系统的方法.
所以这是我对如何做到这一点的想法:
一系列if/else语句或switch
switch (status) {
case burned:
if (type == fire) {
damage = damage * 1.1;
}
break;
case frozen:
if (type == ice) {
damage = damage * 2;
}
break;
}
Run Code Online (Sandbox Code Playgroud)
如果我对每个状态有很多可能的结果,我也可以使用嵌套开关.
使用二维数组,其x值为状态,y值为攻击或类型.检查时,[x][y]它会返回攻击中发生的更改的数值.
Burned Frozen
Fire [1.1] [1]
Ice [1] [2]
Run Code Online (Sandbox Code Playgroud)虽然现在这两个看起来都不错,但我不确定它是否适用于未来.现在,我当然可以使用改变伤害量的组合,但是那些具有非数值效果的攻击呢?我不能简单地返回一个值并将我的伤害乘以该值?
是否有可能生成某种代表以下情况的代码:
burned = 1 in first position, frozen = 2 fire attack = f in 2nd position, ice = i damage mod is in the 3rd position
所以对被烧伤的敌人进行火力攻击 …
java android switch-statement multidimensional-array nested-statement
目前我正在创建一个文件管理器.
我想要的是检查用户是否选择了视频文件.该文件可以是mov,f4v,flv,mp4和swf.
我想检查我的var ext是否是其中之一.
我有的是:
if(ext == ('mov' || 'f4v' || 'flv' || 'mp4' || 'swf'))
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎么能让这个工作.我不想使用开关,因为我会收到很多案例.
如果我有类似循环或一组if/else语句的东西,并且我想从嵌套中返回一个值(见下文),那么最好的方法是将值赋给字段或属性并返回那?
见下文:
bool b;
public bool ifelse(int i)
{
if(i == 5)
{
b = true;
}
else
{
b = false;
}
return b;
}
Run Code Online (Sandbox Code Playgroud)