[問題] Programming Ruby 裡的 lambda 範例
Programming Ruby 裡有一個 lambda 的範例是這樣子:
def my_while(cond, &body)
while cond.call
body.call
end
end
i = 0
my_while -> { i < 3 } do
puts i
i += 1
end
可以理解 my_while 需要2個參數
cond:-> { i < 3 }
&body:do ... end
my_while -> { i < 3 }, do # 這樣無法執行?
自己改了一個 my_while2 是比較能理解且可執行的:
def my_while2(cond, body)
while cond.call
body.call
end
end
j = 0
my_while2 -> { j < 3 }, -> { puts j; j += 1 }
想請教 lambda 和 block 間為什麼不需要逗號作為分隔?
是不是有什麼地方小弟漏掉了沒有理解到呢?
當然這一頁上面一點的地方有一個關於 -> 的範例:
proc1 = -> arg { puts "In proc1 with #{arg}" }
不知道是否跟這有關?
以上,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.76.246.40
※ 文章網址: http://www.ptt.cc/bbs/Ruby/M.1403771762.A.062.html
→
06/26 20:43, , 1F
06/26 20:43, 1F
→
06/26 20:44, , 2F
06/26 20:44, 2F
→
06/26 20:44, , 3F
06/26 20:44, 3F
→
06/26 20:44, , 4F
06/26 20:44, 4F
→
06/26 20:45, , 5F
06/26 20:45, 5F
→
06/26 20:58, , 6F
06/26 20:58, 6F
謝謝。
※ 編輯: hcmlinj (211.76.246.40), 06/27/2014 09:10:08
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章