※ 引述《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