`next`和`:_next`之间的区别

时间:2013-03-08 08:16:37

标签: ruby

由于我的其他要求,我正在使用行p( Symbol.all_symbols )搜索另一个符号。那时,我的IRB也得到了:_next,但对此却一无所知。我正在使用:

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

您可以使用以下代码检查相同内容:

Arr = Symbol.all_symbols 
Arr.include?(:_next) #=> true

有人可以帮我理解next:_next的功能有何区别吗?

3 个答案:

答案 0 :(得分:1)

该符号通常不存在。

但是使用您的代码,您只需提及它即可创建它。

尝试irb:

arr = Symbol.all_symbols
arr.include? :_next                       # => false
arr = Symbol.all_symbols
arr.include? :_next                       # => true

或(使用新实例)试试这个:

Symbol.all_symbols.map(&:to_s).include?('_next') # => false
:_next
Symbol.all_symbols.map(&:to_s).include?('_next') # => true

答案 1 :(得分:0)

next是Ruby方法,:_next是符号。

假设您有一个数组= [1,2,3]。运行以下命令将打印[2,6]

[1,2,3].each{ |n| next if n.even? ; puts 2*n }

next作为符号将接收器转换为String,然后将String#的结果作为符号返回。

示例:"gender".to_sym.next将返回:gendes

答案 2 :(得分:0)

我现在在我的Mac上用ruby 1.9.3-p374,ruby 1.9.3-p385,ruby 1.9.3-p392和ruby 2.0.0-p0测试了这个。我无法重现这一点。我总是假的。

你有没有尝试过任何其他版本的Ruby?