Ruby中的星号前缀在循环变量中意味着什么?

时间:2017-08-16 10:48:57

标签: ruby

我今天已经忘记了这一点,我不知道这意味着什么。我试着去谷歌,但我没有运气。有人可以向我解释一下吗?

combinations.each do |combination|
  messages = EventNotification.where('user_id = ? AND message_template = ?', *combination)
  ...
end

1 个答案:

答案 0 :(得分:3)

它称为 splat运算符,它将数组解包为单个方法参数。在这种情况下,因为函数可能需要格式字符串后面的两个参数,它等同于:

messages = EventNotification.where('user_id = ? AND message_template = ?',
                                   combination[0], combination[1])

在其他语言中,此功能通常称为" varargs"。