在下面的test2
方法中,为什么方法返回不等于return
时,为什么需要nil
关键字?
在test
中,return
不是必需的。程序评估的最后一行(true
或false
)成为返回
def test
x = gets.chomp
if x == 'yes'
true
else
false
end
end
result = test
puts result # PRINTS 'TRUE' OR 'FALSE'
但在test2
中,如果未在指定的行中指定return
,则该方法的返回值为nil
。
def test2
while true
reply = gets.chomp.downcase
if (reply == 'yes' || reply == 'no')
if reply == 'yes'
true # RETURN NEEDED HERE
else
false # RETURN NEEDED HERE
end
break
else
puts 'Please answer "yes" or "no".'
end
end
end
result2 = test2
puts result2 # PRINTS NIL
这些例子改编自Chris Pine的“如何编程”,其中说明返回键是必要的,以便退出循环。但是,如果要评估的最后一行仍然是true
或false
,为什么要返回一个值?
答案 0 :(得分:3)
如果您不使用return
,则方法中的最后一个语句是while
循环本身,其值为nil
。当你摆脱循环时,你的循环中if的结果不会被“结束”
答案 1 :(得分:1)
您可以使用break
为while
提供返回值:
if reply == 'yes'
break true
else
break false
end