[無用] 運算子定義
Ruby的運算子可以自行定義
一般來說1元運算子是不會傳參數的
像是以下的程式碼
class C
def +@
return 5566
end
end
> +C.new
#=> 5566
但是今天偶然嘗試了把1元運算子加上參數
class C
def +@(x)
return x
end
end
於是原先的呼叫就會失敗
> +C.new
#=> ArgumentError: wrong number of arguments (0 for 1)
from (irb):3:in `+@' 呼叫+@的參數過少
那假如踹踹其他方法呢?
> +C.new(100)
#=> ArgumentError: wrong number of arguments (1 for 0)
from (irb):8:in `initailize' 呼叫建構子的參數過多
> +C.new,100
#=> SyntaxError: (irb):10: syntax error, unexpected ',',
expecting end-of-input 語法錯誤
那到底要如何呼叫這個方法呢?
> C.new.+@(100)
#=> 100
於是我們終於可以得到此運算子的結果
但是破壞了原本語法的糖衣
很不方便
是個很無用的運算子定義方式
--
CPU: Pentium4 HT 631
RAM: DDR400 1G*4
MB: MS-7133
HDD: Seagate 40G + WD 40G + Hitachi 120G
DVD: ASUS DRW-24B3ST
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.97.185
※ 文章網址: https://www.ptt.cc/bbs/Ruby/M.1447433987.A.12E.html
推
11/14 04:26, , 1F
11/14 04:26, 1F
※ 編輯: AIGecko (1.171.99.80), 11/14/2015 16:39:38
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章