以下是irb
shell中的简单语句。输出中的nil
是什么意思?为什么它伴随if
块中的print语句?
irb(main):062:0> if(x==20 && y==30)
irb(main):063:1> print("if statement working !")
irb(main):064:1> else
irb(main):065:1* print("else statement working !!")
irb(main):066:1> end
if statement working !=> nil # what does nil represent here ?
答案 0 :(得分:5)
在Ruby中,所有表达式都返回值,即使它是nil
。块和方法只返回最后计算的表达式的值。有效地使用它有很多种方法。例如,这就是经常不使用显式return
的原因。此外,您可以这样做:
print if x == 20 && y == 30
'if statement working!'
else
'else statement working!'
end
关于您的示例:除了按照指示打印字符串外,irb
还将显示从if-else块接收的值。由于print
始终返回nil
,因此两个分支都将返回相同的值。
答案 1 :(得分:2)
这意味着你的if-block没有返回一个值(实际上它可以)。例如,以下内容完全合法且可行:
foo = if bar > 10
42
else
0
end
# now, foo is either 42 or 0