新手问题 | 结 | "_"在 ruby 中代表什么

sectic · 2012年06月23日 · 最后由 sectic 回复于 2012年06月23日 · 2491 次阅读
[1] pry(main)> 1 + 2
=> 3
[2] pry(main)> _
=> 3
[3] pry(main)> 1 + _
=> 4
[4] pry(main)> exit
  ~  pry
[1] pry(main)> _.class
=> NilClass
[2] pry(main)> _
=> NilClass
[3] pry(main)> 1 + 2
=> 3
[4] pry(main)> x
NameError: undefined local variable or method `x' for main:Object
from (pry):4:in `<main>'
[5] pry(main)> _
=> 3
[6] pry(main)> 1 + _
=> 4
[7] pry(main)> _.class
=> Fixnum
[8] pry(main)> 

'_' 不是在 ruby中定义的变量 ,是 ruby的 REPL 环境中上一次 eval 的值

最后(上一次)的 eval 结果。

这不是 Ruby 里的,是 IRB/Pry 特有的变量,存储REPL的 eval 过程的结果。

#3 楼 @hooopo

n = %w( 1 2 3 )
n.each { puts  _}

写了一个试了一下,不能 command + R,报错是 udefined local variable or method ‘_’ for main:Object 。但是在 irb 里为什么结果是打印三次>理解了,thanks

#4 楼 @sectic pry 和 irb 里都是打印 3 次啊 没有报错

#5 楼 @hooopo 刚才想错了,thanks

需要 登录 后方可回复, 如果你还没有账号请 注册新账号