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

看板Ruby作者 (釣到一隻猴子@_@)時間10年前 (2014/06/12 17:40), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串3/6 (看更多)
※ 引述《AIGecko (壁虎貓耳控)》之銘言: : 偶然忘了打函式只打了小括號 : 發現.()等同.call() : ->(){print "hello, world"}.() #=>hello, world : ->(){print "hello, world"}.call() #=>hello, world : 不只是Proc : 其他物件只要有call這個方法都可以這樣用 : class C : def call : print "hello, world" : end : end : C.new.() #=>hello, world : 這誰會發現啊... : 而且可讀性也不好... 這是Ruby內部運作的概念啊 所有東西都是運算子 像是a+b 實際狀況是 => a.+(b) 也就是呼叫了a當中的+這個方法去跟b處理 method() 同樣也可以是 => method.() 反倒概念上call是()的別名正確一點XD 雖然在實際上也不是這樣就是XDDD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.216.102 ※ 文章網址: http://www.ptt.cc/bbs/Ruby/M.1402566004.A.49A.html

06/12 18:16, , 1F
已知運算子可以改成函式寫法 不過直接()還真想不到
06/12 18:16, 1F

06/12 18:17, , 2F
測試過不能直接定義() 應該有特別設計過??
06/12 18:17, 2F

06/14 20:54, , 3F
保留字怎麼定義= =
06/14 20:54, 3F

06/14 20:54, , 4F
如果可以定義() 其他語法都掛了
06/14 20:54, 4F

06/16 00:29, , 5F
嗯?C++ 表示:
06/16 00:29, 5F

06/16 01:23, , 6F
改天拿C版本的API來定義看看 或許可以
06/16 01:23, 6F

06/16 10:30, , 7F
不要再挑戰ruby的直譯器啦XDDDD
06/16 10:30, 7F

06/16 21:08, , 8F
Matz表示:______
06/16 21:08, 8F

08/29 12:30, , 9F
"括號並不是一個方法"*3
08/29 12:30, 9F
文章代碼(AID): #1JcNLqIQ (Ruby)
文章代碼(AID): #1JcNLqIQ (Ruby)