Ruby方法在执行条件后返回nil值

Bal*_*hik 1 ruby return-value

我有以下方法

def add_5(a)
   a + 5 
end
Run Code Online (Sandbox Code Playgroud)

当我调用add_5(5)时,它返回10

对于该方法

def add_5(a)
   a + 5 
   a + 5 if false 
end
Run Code Online (Sandbox Code Playgroud)

当我调用add_5(5)时,它返回nil.我只需要知道为什么会这样

Ser*_*sev 7

我只需要知道为什么会这样

  • 方法的隐式返回值是其上次计算的表达式的值.
  • 您上次评估的表达式是if.
  • if表达式的值是相应正文中的最后一个计算表达式("if block"或"else block",具体取决于条件的计算方式).
  • if并没有评估它的真实身体(由于它的假情况)并且它没有假的身体,所以它没有价值.在这种情况下,nil通常会退回.