我目前正在 rubymonk.com 上进行练习,但无法解决这个问题。
我打算写三种方法,加法、减法和计算。计算是一种结合了加法和减法的方法,具体取决于传递给方法的最后一个参数,它应该是一个包含符号 ':add' 或 ':subtract' 的散列
这是解决方案代码:
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 : {}
即使那样,我也明白发生了什么,但我不明白为什么会有第二个“?” 或者为什么存在':{}'。谁能向我解释这里发生了什么?
谢谢!