2

由于我的其他要求,我正在用 . 行搜索另一个符号p( Symbol.all_symbols )。那个时候,我也进了:_next我的IRB,但不知道。我在用:

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

您可以使用以下代码进行检查:

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

任何人都可以帮助我了解next功能上的区别:_next吗?

4

3 回答 3

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
于 2013-03-08T11:13:17.223 回答
0

我现在已经在我的 Mac 上的 ruby​​ 1.9.3-p374、ruby 1.9.3-p385、ruby 1.9.3-p392 和 ruby​​ 2.0.0-p0 中对此进行了测试。我无法重现这一点。我总是假的。

您是否在任何其他版本的 Ruby 上尝试过它?

于 2013-03-08T10:22:11.193 回答
0

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

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

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

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

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

于 2013-03-08T08:35:35.013 回答