看板 Ruby 關於我們 聯絡資訊
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
fr373969: 推無用 11/14 04:26
※ 編輯: AIGecko (1.171.99.80), 11/14/2015 16:39:38