可能重复:
如何在 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 : {}
也就是说,一个独立的问号到底有什么作用?另外,结肠有什么作用?
非常感谢你的帮助!