2013-05-21 59 views
2

我的程序的目標是讀入一個由空格分隔的數字網格的文件。爲了在我的程序中處理這個,我需要它是一個多維數組。我試圖用這個做: IO.readlines到多維數組

arr = IO.readlines("Example.txt") 
arr.map { |string| string.chomp.split.map { |sub_str| sub_str.to_i } } 

此代碼,運行時,將只返回我原來的數組,字符串和「\ n」。我已經能夠得到預期的效果:

arr = IO.readlines("Example.txt") 
int = Array.new 
arr.each { |string| int << string.chomp.split.map { |sub_str| sub_str.to_i } } 

我寧願變異原來的數組,而創建一個新的。我如何映射數組以獲得期望的結果?我對Ruby真的很陌生,並且很享受它的OOP。 感謝您的幫助。

回答

1

只是重新分配原始數組

arr = arr.map { |string| string.chomp.split.map { |sub_str| sub_str.to_i } } 

或者使用破壞性map!

arr.map! { |string| string.chomp.split.map { |sub_str| sub_str.to_i } } 
+0

完美!在非破壞性#map的情況下,#each和#map之間有什麼區別? – rafroehlich2

+0

@ rafroehlich2:'#each'忽略從塊返回的值。它用於對每個元素執行一些操作,而不用於轉換元素。 –