0

这些符号在哪里定义,它们的用途是什么?

:w2_end
:w2_beg
:w1_beg
:w1_end

IRB通过使用 line找到了我的那些Symbol.all_symbols

我的Ruby版本和IRB版本是:

C:\>ruby -v
ruby 1.9.3p374 (2013-01-15) [i386-mingw32]

C:\>irb --version
irb 0.9.6(09/06/30)

我在另一个版本中尝试了相同的方法RubyIRB如下所示:

C:\>irb --version
irb 0.9.6(09/06/30)

C:\>ruby -v
ruby 1.9.3p392 (2013-02-22) [i386-mingw32]

Arr = Symbol.all_symbols 
Arr.include?(:w2_end) #=> true
Arr.include?(:w2_beg) #=> true
Arr.include?(:w1_beg) #=> true
Arr.include?(:w1_end) #=> true
4

1 回答 1

1

这些符号没有出现在 Ruby 源代码中,也没有在我查找它们时定义:

$ rvm 1.9.3-p374 do irb
1.9.3p374 :003 > Symbol.all_symbols.map(&:to_s).grep(/^w\d/)
 => [] 

您是否已将 irb 配置为加载任何扩展程序?查看您的 .irbrc,如果有的话。

这些符号通常可以在 readline 库等地方找到。irb 使用 readline。也许 Windows 上的 readline 有一些特别之处(例如,它是用 Ruby 编码的)导致这些符号被定义。

于 2013-03-08T17:30:04.143 回答