问题:对照书中的代码写下如下 ruby 异常捕捉,预计代码的返回值应该是 1,而我在终端执行的这段代码却没有返回值,我的 ruby 版本是 2.1,代码如下:
class Demo def divide(m) begin 1/m rescue ZeroDivisionError => e m += 1 retry end end end obj = Demo.new obj.divide(0)
不可能...除非还有其他代码混杂了,贴你的终端运行结果看看
#1 楼 @quakewang windows 下的终端,ruby 版本 2.1
你最后返回没有执行任何输出,自然屏幕里面不会有输出结果,加个 puts 就好了 puts obj.divide(0)
#3 楼 @quakewang bingo 返回和输出返回值是两码事情。
Mac 终端是正常的,建议别再 windows 下折腾 Ruby。
windows 下也没问题。不知你所云。
puts
#3 楼正解
#4 楼 @runup 是这样的,如果直接把你的代码粘贴到终端执行,确实会返回 1 的,但是你将代码放入文件中,然后用 Ruby 命令去执行,这个时候就不会返回最后一行代码的值给你了,除非你显示输出如 puts,正如@quakewang 所说。