我找不到if
(或unless
)修饰符的正式规范:
123 if x > 0
如果x
不高于零,上述陈述的价值是多少? irb
建议nil
,但它是否记录在哪里?
(是的,这可能是一个愚蠢的问题,对不起,找不到规格)。
答案 0 :(得分:5)
未评估的表达式与不存在的表达式相同。并且您的条件应该是某些代码块的一部分,例如定义或主要环境等。没有内容的代码块将被评估为nil
。
class A; end
# => nil
def foo; end
foo
# => nil
()
# => nil
begin; end
# => nil
eval("")
# => nil
因此,您的示例返回nil
的原因与条件本身无关。这只是因为没有评估。
答案 1 :(得分:3)
是的,它是nil
。还有什么可以回归? if
子句中的语句用于if本身,并且不执行then
语句。没有任何回报,所以nil
。
it "returns nil if else-body is empty and expression is false" do
if false
123
else
end.should == nil
end