看板 Ruby 關於我們 聯絡資訊
※ 引述《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
AIGecko:已知運算子可以改成函式寫法 不過直接()還真想不到 06/12 18:16
AIGecko:測試過不能直接定義() 應該有特別設計過?? 06/12 18:17
alog:保留字怎麼定義= = 06/14 20:54
alog:如果可以定義() 其他語法都掛了 06/14 20:54
uranusjr:嗯?C++ 表示: 06/16 00:29
AIGecko:改天拿C版本的API來定義看看 或許可以 06/16 01:23
alog:不要再挑戰ruby的直譯器啦XDDDD 06/16 10:30
hcmlinj:Matz表示:______ 06/16 21:08
tonytonyjan: "括號並不是一個方法"*3 08/29 12:30