Why doesn't each_slice work?

早过忘川 提交于 2019-12-23 03:17:13

问题


I am trying to use the Enumerable#each_slice. It doesn't work on my computer, stating that method is not found.

I am running ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]

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

Example:

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

What am I doing wrong?


回答1:


In ruby 1.8.6 you have to require 'enumerator' (which is part of stdlib and has been merged into core in 1.8.7+) before using each_slice.

Sadly the ruby-doc lists methods that are added to core classes by stdlib without mentioning where the methods are from.




回答2:


just compared 1.8.6 to 1.9 and it looks like

(1..10).respond_to? :each_slice

is true in 1.9 and false in 1.8.6. So, the doc you are using is not for 1.8.6. if you can upgrade to a newer version of Ruby easily it should give you that method on the Range.



来源:https://stackoverflow.com/questions/2293734/why-doesnt-each-slice-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!