我正在尝试运行一系列if / else语句,但现在它们基本上最终被嵌套在if / else语句中。
我最终想说:如果A不为真,则运行B.如果B不为真,则运行C.如果C不为真,则运行D,依此类推。
原油示例:
if a == b
return true
else
c = d/e
if c = a
return true
else
g = h*i
if g == true
return true
else
return false
end
end
end
答案 0 :(得分:2)
首先,当您从else
的第一个分支返回时,您不需要if
,所以
if (condition)
return true
else
# otherwise code
end
应始终写
if (condition)
return true
# otherwise code
这可以在Rails中更简洁地写出来:
return true if (condition)
# otherwise code
其次,这种模式特别可怕:
if (condition)
return true
else
return false
end
你应该总是更喜欢简单地返回条件,这完全等价(假设条件的计算结果为布尔值true / false):
return (condition)
将这些放在一起,你会得到这个大大简化,非嵌套但相同的代码:
return true if a == b
c = d/e
return true if c == a
g = h*i
return g == true
答案 1 :(得分:1)
return true if a == b
c = d/e
return true if c == a
g = h*i
return true if g == true
return false
您可以在Ruby中使用语句修饰符来添加条件逻辑。因此,如果满足某些条件,则可以执行您计划执行的操作,而不是嵌套的if语句。
答案 2 :(得分:1)
从您的示例中,由于您在检测到成功时返回,因此没有理由嵌套if语句。以下内容:
return true if a == b
c = d/e
return true if c == a
g = h*i
return g
将与您的示例完全相同。 (实际上,我不认为我的最终回复声明也是必需的)