2

私の他の要件により、行で別のシンボルを検索していましたp( Symbol.all_symbols )。その時、私も:_nextIRB に参加しましたが、それについてはまったく知りませんでした。私は使っている:

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 に答える