0

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

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

'?' 是什么?运算符在 ...(Hash) 之间做什么?论点.pop ...

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

4

3 回答 3

2

这是三元运算符

这就像一条捷径

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

只要你有简短、简洁的 if 语句,就可以使用它

于 2013-08-24T22:45:48.030 回答
2

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

condition ? true_value : false_value

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

于 2013-08-24T22:45:09.290 回答
0

它被称为三元运算符

(condition) ? (use_this_if_true) : (use_this_if_false)

在您给出的示例中,选项将包含 arguments.pop 如果 arguments[-1].is_a?(Hash) 否则选项将包含由 {} 表示的空哈希

于 2013-08-24T22:47:21.780 回答