Ruby 中的独立问号有啥作用? [复制]
Posted
技术标签:
【中文标题】Ruby 中的独立问号有啥作用? [复制]【英文标题】:What does a stand-alone question mark do in Ruby? [duplicate]Ruby 中的独立问号有什么作用? [复制] 【发布时间】:2012-12-20 04:07:26 【问题描述】:可能重复:How do I use the conditional operator (? :) in 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 :
也就是说,一个独立的问号到底有什么作用?还有,冒号有什么作用?
非常感谢您的帮助!
【问题讨论】:
它是三元运算符的一部分。见这里:tutorialspoint.com/ruby/ruby_operators.htm 在三元运算符下。 【参考方案1】:这是表达 if-then-else 的另一种方式。例如
options = arguments[-1].is_a?(Hash) ? arguments.pop :
完全一样
if arguments[-1].is_a?(Hash)
options = arguments.pop
else
options =
end
【讨论】:
这也是一个有用的评论。谢谢。【参考方案2】:options = arguments[-1].is_a?(Hash) ? arguments.pop :
是三元运算符语句的一部分。这是一种在单行上执行 if 条件的方法。
(condition) ? then : else.
【讨论】:
谢谢,这很有道理。以上是关于Ruby 中的独立问号有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章