在Ruby中使用后缀"if"语句的目的是什么?

Ada*_*Lee 6 ruby

我知道Ruby支持的后缀if如下:

number = -42 if opposite
Run Code Online (Sandbox Code Playgroud)

但是这个目的是什么?为什么要用它来代替前缀if语句?

Mat*_*son 6

后缀式if,unless也可以用于"后卫条款",形式为:

return if ...
return unless ...
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

# suffix-style
def save
  return false if invalid?
  # go for it
  true
end
Run Code Online (Sandbox Code Playgroud)

与:

# indented style
def save
  if valid?
    # go for it
    true
  else
    false
  end
end
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,由于valid?检查,方法的整个实现必须由一个缩进移位,并且我们需要一个额外的else子句.使用后缀样式,invalid?检查被视为我们处理然后拯救的边缘情况,并且方法的其余部分不需要缩进或else子句.

这有时被称为"保护条款",并由Ruby Style Guide 推荐.


Mat*_*ing 2

它与前缀相同但更短。唯一的原因是节省文本编辑器中的垂直空间。