那是什么?运算符在Ruby中

时间:2013-08-24 22:43:02

标签: ruby pop

我在这里有一个函数,它检查输入数组的最后一个元素是否是哈希表。如果是这样,它将删除哈希表中的最后一个元素。这来自Ruby Monk 6.2节中的解决方案。

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

什么是'?'操作员之间做...(哈希)? arguments.pop ...

为什么arguments.pop之后还有':{}'。

3 个答案:

答案 0 :(得分:2)

这是一个三元条件运算符。它具有以下形式:

condition ? true_value : false_value

它评估条件,并在条件为真时假定true_value的值,在条件为假时假定为false_value

答案 1 :(得分:2)

这是ternary operator

这就像是

的捷径
if arguments[-1]is.A?(Hash)
  arguments.pop
else
  {}
end

只要您有简短的if语句

,就可以使用它

答案 2 :(得分:0)

它被称为三元运算符

(condition) ? (use_this_if_true) : (use_this_if_false)

在你给出的例子中,如果参数[-1] .is_a?(Hash),options将包含arguments.pop,否则选项将包含由{}

表示的空哈希