我正在尝试执行以下操作:
class SUM
def make_sum (number)
return number+number
end
def make_sum (number_a, number_b)
return number_a+number_b
end
end
operation = SUM.new
operation.make_sum(5) # returns 10
operation.make_sum(2, 3) # returns 5
一个输入的make_sum方法由具有两个输入的那个重新定义。
答案 0 :(得分:2)
如果添加的是你之后的,你可以更简单地做到:
def add(*numbers)
numbers.inject(&:+)
end
add(1) # => 1
add(1, 3, 5) # => 9
如果您正在寻找一个更通用的解决方案来解决如何提供依赖于参数数量的行为的问题,那么您可以在签名中使用*args
,然后根据{{1}进行分支}:
args.size
答案 1 :(得分:0)
我和@keith-bennett的反应相同。但我不知道它就像他的回答一样简单。这是我的解决方案:
class Foo
def self.add(*args)
r = 0
if args.length > 1
args.each { |a| r += a.to_i }
else
r += (args[0].to_i + args[0].to_i)
end
return r
end
end
f = Foo
puts f.add(1, 2)
# => 3
puts f.add(1)
# => 2