看板 Ruby 關於我們 聯絡資訊
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
danny8376:掛&的參數必須放最後(*則是倒數第二) 06/26 20:43
danny8376:這參數代表後方會掛一個block傳進來 06/26 20:44
danny8376:(也可以不用&參數 而在中間用yield) 06/26 20:44
danny8376:簡單來說大概像 loop do ... end 06/26 20:44
danny8376:其實這也是個內建的一個用了&參數的方法 06/26 20:45
danny8376:對了 這用法Ruby中蠻常出現的 06/26 20:58
謝謝。 ※ 編輯: hcmlinj (211.76.246.40), 06/27/2014 09:10:08