获取语​​法错误def receive(collection = [],fresh_packet,prefix ='')

时间:2014-09-15 11:24:59

标签: ruby-on-rails ruby

我在以下代码中遇到语法错误:

def (collection = [], fresh_packet, prefix = '')
end

如果我重新排序参数,它可以正常工作。我没有使用过splat但我不知道参数

出了什么问题

1 个答案:

答案 0 :(得分:1)

这是因为您在两个可选参数的中间传递了一个必需参数fresh_packet。试试这个:

def receive(fresh_packet, collection = [], prefix = "")
end

在您自己的示例中,Ruby无法知道您传递的第一个参数是可选的还是必需的。如果要混合可选参数和必需参数,必须先获得所需参数。查看关于method arguments in Ruby

的博文

您也可以传入哈希:

def receive(options = {})
  fresh_packet = options[:fresh_packet]
  collection = options[:collection] || []
  prefix = options[:prefix] || ""
  # do stuff
end