为什么each_slice不起作用?

时间:2010-02-19 02:33:41

标签: ruby api enumerable core-api

我正在尝试使用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

我做错了什么?

2 个答案:

答案 0 :(得分:7)

在ruby 1.8.6中,在使用each_slice之前,你必须require 'enumerator'(它是stdlib的一部分并且已经合并到1.8.7+中的核心)。

可悲的是,ruby-doc列出了stdlib添加到核心类的方法,但未提及方法的来源。

答案 1 :(得分:1)

刚刚比较1.8.6到1.9,看起来像是

(1..10).respond_to? :each_slice

在1.9中为真,在1.8.6中为假。因此,您使用的文档不适用于1.8.6。如果你可以轻松升级到更新版本的Ruby,它应该在Range上提供该方法。