1

Enumerable#each_slice を使用しようとしています。私のコンピューターでは機能せず、メソッドが見つからないと述べています。

Ruby 1.8.6 (2008-08-11 パッチレベル 287) [universal-darwin9.0] を実行しています。

API: http://ruby-doc.org/core/classes/Enumerable.html#M003142

例:

(1..10).each_slice(3) {|a| p a} # I get NoMethodError: undefined method `each_slice' for 1..10:Range

私は何を間違っていますか?

4

2 に答える 2

7

ruby 1.8.6 ではrequire 'enumerator'、each_slice を使用する前に (stdlib の一部であり、1.8.7+ でコアにマージされています) する必要があります。

悲しいことに、ruby-doc には、stdlib によってコア クラスに追加されたメソッドが記載されていますが、そのメソッドがどこからのものかは言及されていません。

于 2010-02-19T11:39:54.303 に答える
1

1.8.6 と 1.9 を比較すると、次のようになります。

(1..10).respond_to? :each_slice

1.9 では真、1.8.6 では偽です。したがって、使用しているドキュメントは 1.8.6 用ではありません。Ruby の新しいバージョンに簡単にアップグレードできる場合は、Range でその方法が提供されるはずです。

于 2010-02-19T02:48:50.897 に答える