1
在下面的代碼中,海洋代表海底山脈的高度。亞特蘭蒂斯是各個地點的一組座標。我想總結一下atlantis引用的山峯高度。什麼是注射返回?和什麼可以在一個塊?
require 'matrix'
Ocean=Matrix[ [3,1,4,4,6,2,8,12,8,2],
[6,2,4,13,25,21,11,22,9,3,],
[6,20,27,34,22,14,12,11,2,5],
[6,28,17,23,31,18,11,9,18,12],
[9,18,11,13,8,9,10,14,24,11],
[3,9,7,16,9,12,28,24,29,21],
[5,8,4,7,17,14,19,30,33,4],
[7,17,23,9,5,9,22,21,12,21,],
[7,14,25,22,16,10,19,15,12,11],
[5,16,7,3,6,3,9,8,1,5] ]
atlantis=[[2,3],[3,4]]
puts atlantis.inject {|sum, n| sum + Ocean[n(0),n(1)]}
由於亞特蘭蒂斯是數組的數組中,n(0)應該是指第一元件,如圖2所示,第一陣列[2,3]的第一次注入確實塊。但錯誤,我得到
t1.rb:15:在block in <main>': undefined method
N '主:對象(NoMethodError) 從t1.rb:15:在each' from t1.rb:15:in
注入' 從t1.rb:15:在'」
似乎表明它甚至不知道「n」是什麼。我錯過了什麼?在這種情況下,n究竟代表什麼?
用方括號數組元素引用'[]',而不是parens,例如'海洋[n [0],n [1]]'。 – maerics 2012-07-30 20:27:33
添加摺疊的起始值:'inject(0)' – tokland 2012-07-30 20:30:31