Re: [無用] .call()可省略call

看板Ruby作者 (釣到一隻猴子@_@)時間10年前 (2014/06/18 02:57), 10年前編輯推噓3(300)
留言3則, 3人參與, 最新討論串5/6 (看更多)
※ 引述《CindyLinz (Cindy Wang)》之銘言: : 好奇想問一下為什麼會把 === 也定義進去啊? : 吃掉了OwO : 可是.. === 是什麼情況用會看起來順啊? : 把 Proc 視為一個 lazy deferred 的 value 嗎? : 如果寫 thunk === 3 就是用來檢查這個 thunk 裡面的 value 是不是 3? : 只是如果真是這樣的想法的話, : 那麼其他的 + - * / 也都可以用同樣的理由定義進去才對呀? Ruby裡的===並不是一個會被直接呼叫使用的運算子 本身也不是跟==這種equal有直接關係的運算子 Ruby的===是case專用的內部運算子 意義上比較接近in range/type of的感覺吧? when放了num/string之類的就跟==一樣 when放了range 就是in range check when放了regex 就是檢測字串是否匹配 when放了class 代表是這class的instance時怎樣 ... 當放了block(proc, lambda)的時候 就是把block本身當作判斷式去執行 而這個block自身就必須要有一個參數傳入(when判斷對象) 而其應該要回傳true/false來回報是否匹配 Ex. http://ideone.com/59UrnO ============================================== [] 順便補充下 Ruby裡幾乎所有instance都能有[]系列運算子 (常用的singleton外,還有各種方法可以硬塞) 而Proc會用[]大概就想仿陣列一類的用法去呼叫Proc Ex. http://ideone.com/eXu69l -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.216.102 ※ 文章網址: http://www.ptt.cc/bbs/Ruby/M.1403031456.A.24C.html ※ 編輯: danny8376 (140.115.216.102), 06/18/2014 03:12:02

06/18 03:44, , 1F
singleton寫法 class<<C;def [];end;end 輕鬆定義~~
06/18 03:44, 1F
※ 編輯: danny8376 (140.115.216.102), 06/18/2014 03:55:51

06/18 13:25, , 2F
是的,在 case..when 的時候 === 會被呼叫到 :)
06/18 13:25, 2F

06/18 20:21, , 3F
懂! 謝謝 ^^
06/18 20:21, 3F
文章代碼(AID): #1Je8-W9C (Ruby)
文章代碼(AID): #1Je8-W9C (Ruby)