我知道Ruby支持的后缀if如下:
number = -42 if opposite
Run Code Online (Sandbox Code Playgroud)
但是这个目的是什么?为什么要用它来代替前缀if语句?
后缀式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 推荐.