如何运行一系列检查?

时间:2011-08-29 17:19:24

标签: ruby comparison

我正在尝试运行一系列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

3 个答案:

答案 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

将与您的示例完全相同。 (实际上,我不认为我的最终回复声明也是必需的)