[無用] 運算子定義

看板Ruby作者 (師大貓耳控)時間9年前 (2015/11/14 00:59), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
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
文章代碼(AID): #1MHXS34k (Ruby)
文章代碼(AID): #1MHXS34k (Ruby)