Ruby中能否获取未存入变量的方法隐式返回值?
关于Ruby中未存储返回值的访问问题
1. 能否获取未存储在变量中的函数返回值?
这得分使用场景来看:
- 如果是在**交互式控制台(irb)**里,完全可以!Ruby的irb自带一个特殊的下划线变量
_,它会自动保存上一个表达式的执行结果——不管这个结果是不是函数返回的。比如你调用method方法之后,直接输入_就能拿到它的返回值。 - 但如果是在普通脚本文件里运行代码,这个
_变量就没有这个功能了。未被赋值到变量的返回值会被直接丢弃,你必须显式把函数调用的结果存到变量里,比如result = method,才能后续访问这个值。
2. 示例方法中if表达式的返回值能否访问?
你的理解完全正确:Ruby里每个表达式都有返回值,方法如果没有显式return语句,最后一个表达式的值就是方法的返回值。你示例里的整个if-elsif-else结构就是方法的最后一个表达式,它的结果会作为方法返回值。
访问这个值的方式和第一个问题一致:
- 在irb里,调用
method后用_就能直接拿到; - 在脚本里,必须把
method的调用结果赋值给变量才能留存这个值; - 要是用调试工具(比如byebug),你也可以在方法执行完毕后查看返回值,或者在调试过程中把结果暂存到变量里方便检查。
内容的提问来源于stack exchange,提问作者estani
相关产品推荐
相关产品推荐

