def add(*numbers)
numbers.inject(0) { |sum, number| sum + number }
end
def subtract(*numbers)
sum = numbers.shift
numbers.inject(sum) { |sum, number| sum - number }
end
def calculate(*arguments)
# if the last argument is a Hash, extract it
# otherwise create an empty Hash
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
options[:add] = true if options.empty?
return add(*arguments) if options[:add]
return subtract(*arguments) if options[:subtract]
end
有人可以用简单的英语向我解释为什么我们需要检查这段代码中的最后一个参数是否是一个哈希然后弹出它:
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
谢谢