在Ruby中,独立问号的作用是什么?
可能重复:在Ruby中,独立问号的作用是什么?,ruby,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 o
我正在自学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
请注意,add和subtract是对其参数进行加法/减法的现有函数,其长度可能会有所不同
计算应该是这样工作的
calculate(1,2,3,4,5,add: true) => 10
calculate(10,3,4, subtract: true) => 3
我的问题是,有人能解释一下这一行发生了什么:
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
也就是说,一个独立的问号到底做什么?还有,冒号是做什么的
非常感谢你的帮助
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
是三元运算符语句的一部分。这是一种在单行上执行if条件的方法
(condition) ? then : else.
这是表达if-then-else的另一种方式。比如说
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
完全一样
if arguments[-1].is_a?(Hash)
options = arguments.pop
else
options = {}
end
这是三元运算符的一部分。请看这里:在三元运算符下。谢谢,这很有意义。这也是一个有用的评论。谢谢