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

楼主: danny8376 (钓到一只猴子@_@)   2014-06-12 17:40:00
※ 引述《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
作者: AIGecko (师大猫耳控)   2014-06-12 18:16:00
已知运算子可以改成函式写法 不过直接()还真想不到测试过不能直接定义() 应该有特别设计过??
作者: alog (A肉哥)   2014-06-14 20:54:00
保留字怎么定义= =如果可以定义() 其他语法都挂了
作者: uranusjr (←這人是超級笨蛋)   2014-06-16 00:29:00
嗯?C++ 表示:
作者: AIGecko (师大猫耳控)   2014-06-16 01:23:00
改天拿C版本的API来定义看看 或许可以
作者: alog (A肉哥)   2014-06-16 10:30:00
不要再挑战ruby的直译器啦XDDDD
作者: hcmlinj (接米)   2014-06-16 21:08:00
Matz表示:______
作者: tonytonyjan (南洋大兜虫)   2014-08-29 12:30:00
"括号并不是一个方法"*3

Links booklink

Contact Us: admin [ a t ] ucptt.com