我正在尝试使用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
我做错了什么?
答案 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上提供该方法。