0

重複の可能性:
Ruby で条件演算子 (? :) を使用するにはどうすればよいですか?

私は独学で Ruby を学んでおり、RubyMonk の演習を行っています。私は混乱するこのコードに出くわしました:

def calculate(*arguments)
  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

加算と減算は、引数を加算/減算する既存の関数であり、長さが異なる可能性があることに注意してください。

計算は次のように機能するはずです

 calculate(1,2,3,4,5,add: true) => 10
 calculate(10,3,4, subtract: true) => 3

私の質問は、誰かが行で何が起こっているかを説明できるかということです:

options = arguments[-1].is_a?(Hash) ? arguments.pop : {}

つまり、スタンドアロンの疑問符は正確に何をしますか? また、コロンは何をしますか?

助けてくれてどうもありがとう!

4

2 に答える 2

6
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}

三項演算子ステートメントの一部です。1 行で if 条件を実行する方法です。

(condition) ? then : else.
于 2013-01-06T02:57:55.250 に答える
3

これは、if-then-else を表現する別の方法です。例えば

options = arguments[-1].is_a?(Hash) ? arguments.pop : {}

とまったく同じです

if arguments[-1].is_a?(Hash)
  options = arguments.pop
else
  options = {}
end
于 2013-01-06T03:01:03.440 に答える