作者danny8376 (钓到一只猴子@_@)
看板Ruby
标题Re: [无用] .call()可省略call
时间Thu Jun 12 17:40:00 2014
※ 引述《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://webptt.com/cn.aspx?n=bbs/Ruby/M.1402566004.A.49A.html
1F:推 AIGecko:已知运算子可以改成函式写法 不过直接()还真想不到 06/12 18:16
2F:→ AIGecko:测试过不能直接定义() 应该有特别设计过?? 06/12 18:17
3F:→ alog:保留字怎麽定义= = 06/14 20:54
4F:→ alog:如果可以定义() 其他语法都挂了 06/14 20:54
5F:→ uranusjr:嗯?C++ 表示: 06/16 00:29
6F:推 AIGecko:改天拿C版本的API来定义看看 或许可以 06/16 01:23
7F:→ alog:不要再挑战ruby的直译器啦XDDDD 06/16 10:30
8F:推 hcmlinj:Matz表示:______ 06/16 21:08
9F:→ tonytonyjan: "括号并不是一个方法"*3 08/29 12:30