現在、rubymonk.com で演習を行っていますが、この問題に頭を悩ませることはできません。
私は、加算、減算、計算の 3 つのメソッドを記述するつもりです。Calculate は、メソッドに渡された最後の引数に応じて加算メソッドと減算メソッドを組み合わせたメソッドです。これは、シンボル ':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 : {}
それでも、何が起こっているのかは理解できますが、2 番目の「?」がある理由がわかりません。またはなぜ ': {}' があるのですか。ここで何が起こっているのか誰か説明してくれませんか?
ありがとう!