某些方法需要一個塊,如果沒有提供塊,則返回Enumerable
。
在您的示例中,您調用了map
而未提供任何塊。
但是你可以在枚舉器上調用enumerable方法。這允許你改變迭代器的行爲。
array[0].split('').each_slice(9).map { |el| el }
=> [["0", "1", "5", "0", "0", "3", "0", "0", "2"],
["0", "0", "0", "1", "0", "0", "9", "0", "6"],
["2", "7", "0", "0", "6", "8", "4", "3", "0"],
["4", "9", "0", "0", "0", "2", "0", "1", "7"],
["5", "0", "1", "0", "4", "0", "3", "8", "0"],
["0", "0", "3", "9", "0", "5", "0", "0", "0"],
["9", "0", "0", "0", "8", "1", "0", "4", "0"],
["8", "6", "0", "0", "7", "0", "0", "2", "5"],
["0", "3", "7", "2", "0", "4", "6", "0", "0"]]
它的紅寶石更高級一些的話題之一,但在互聯網上,f.i.有大量的資源http://www.sitepoint.com/guide-ruby-collections-iii-enumerable-enumerator/
編輯:
只是爲了回答註釋的問題:你只有一個在array
長字符串。我不問爲什麼,但只是爲了舉一些例子,我需要實際的(字符串?)數組。 array[0]
將數組中的第一個元素(數字的長串)。當我有一個字符串時,我可以調用String#split
來獲得一個像[[「0」,「1」,「5」,「...」]的數組。
Array
包括Enumerable
模塊,這要歸功於你可以調用方法如each_slice
就可以了。作爲文檔狀態(http://rubydoc.info/stdlib/core/Enumerable:each_slice):
如果沒有塊給出,返回一個枚舉
所以調用each_slice(9)
後,我得到Enumerator
實例(http://rubydoc.info/stdlib/core/Enumerator)。它有一些自己的方法,但也包括Enumerable
模塊(使用方法如map
,each_slice
。這裏是樂趣開始的地方,如果我在枚舉器上調用任何這些方法(如map
),它將不會接收到數組的每個元素,像在正常情況下,但是每個元件由枚舉「返回」,即,每個單獨的元件現在是9個元素的數組。
一如既往我高度推薦良好接地Rubyist,其中這樣的受試者中充分解釋。http://www.manning.com/black2/
您的數組只有一個項目? –