[問題] 如何呼叫不同method?

作者: abc0 (haha)   2014-10-19 06:38:31
正在練習寫兩個method, 一個把參數都相加, 一個是相減
比方 add(5,7,9)會傳回21, 而subs(5,7,9)會傳回-11
可是在subs()裡面要如何呼叫add()呢? 謝謝!
def add(*numA)
numA.reduce(:+)
end
def subs(*numS)
numS.shift - numS.reduce(:+)
#這行寫成numS.shift - add(numS)就出錯了
#irb抱怨TypeError: Array can't be coerced into Fixnum
end
這參數都是array啊, 怎麼會是Fixnum? 怎樣修改較佳? 感恩!!
作者: wildrush   2014-10-19 08:39:00
你理解錯了,他是在說add丟回來的是Array用不定參數會把所用參數包成一個Array,只有一個也會變成你subs裡的add 實際上收到一個Array參數而已結果就是包了一個Array的Array做reduce回一個Array又Fixnum的-方法不給減Array就噴了
作者: abc0 (haha)   2014-10-19 09:17:00
!!為何add丟回array?明明[5,7,9].reduce(:+).class是Fixnum終於看懂你的意思了謝謝, 原來在subs裡我該用 add(*numS)

Links booklink

Contact Us: admin [ a t ] ucptt.com