1

我正在尝试使用 Enumerable#each_slice。它在我的计算机上不起作用,说明找不到该方法。

我正在运行 ruby​​ 1.8.6 (2008-08-11 patchlevel 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 回答