Re: [問題] 兩個計算上的小問題
※ 引述《timeregorge (vincent)》之銘言:
: a = [2,4,6,8,10]
: a[0,2].inject(3) { |sum,element| sum + element }
: 為什麼結果是9? 計算過程是怎麼算的呢?
[2, 4].inject(3) { |sum, element| sum + element }
Enumerable 的 inject 會把上面的 block 跑陣列大小的次數,然後依序把元素
帶入 block 的第二的參數(目前是 element),然後 block 最後的運算結果再丟
給 block 的第一個參數(上面定義為 sum),但是第一次執行的時候 sum 沒有值
所以就是你給 inject 的引數,所以第一次執行 block 的 sum 就是你打的 3
執行過程就是:
第一次跑 block => sum = 3, element = 2 # 3 就是你給 inject 的引數
block 回傳 sum + element # => 5
第二次跑 block => sum = 5, element = 4 # 5 就是上次 block 的回傳值
block 回傳 sum + element # => 9
只有兩個元素,所以只跑兩次回傳最後一次的 block 的回傳值 9
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.68.25
※ 文章網址: http://www.ptt.cc/bbs/Ruby/M.1401549784.A.F90.html
※ 編輯: putumaxally (175.180.68.25), 05/31/2014 23:24:56
推
06/03 00:16, , 1F
06/03 00:16, 1F
[2, 4] 就是你的 a[0, 2]
※ 編輯: putumaxally (175.180.68.25), 06/03/2014 01:46:09
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章