作者abc0 (haha)
看板Ruby
标题[问题] 如何呼叫不同method?
时间Sun Oct 19 06:38:31 2014
正在练习写两个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? 怎样修改较佳? 感恩!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 73.170.130.51
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ruby/M.1413671913.A.F45.html
1F:推 wildrush: 你理解错了,他是在说add丢回来的是Array 10/19 08:39
2F:→ wildrush: 用不定参数会把所用参数包成一个Array,只有一个也会 10/19 08:42
3F:→ wildrush: 变成你subs里的add 实际上收到一个Array参数而已 10/19 08:43
4F:→ wildrush: 结果就是包了一个Array的Array做reduce回一个Array 10/19 08:44
5F:→ wildrush: 又Fixnum的-方法不给减Array就喷了 10/19 08:44
6F:→ abc0: !!为何add丢回array?明明[5,7,9].reduce(:+).class是Fixnum 10/19 09:17
7F:→ abc0: 终於看懂你的意思了谢谢, 原来在subs里我该用 add(*numS) 10/19 09:27