3

我在任何地方都找不到if(or unless) 修饰符的正式规范:

123 if x > 0

如果x不高于零,上述语句的值是多少?irb建议nil,但它是否记录在任何地方?

(是的,这可能是一个愚蠢的问题,抱歉,找不到规范)。

4

2 回答 2

5

未计算的表达式与不存在的表达式相同。并且您的条件应该是某些代码块的一部分,例如定义或主环境等。没有内容的代码块被评估为nil.

class A; end
# => nil

def foo; end
foo
# => nil

()
# => nil

begin; end
# => nil

eval("")
# => nil

因此,您的示例返回的原因nil与条件本身无关。只是因为没有评价。

于 2013-02-15T18:49:58.797 回答
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
于 2013-02-15T18:37:58.433 回答