我在以下代码中遇到语法错误:
def (collection = [], fresh_packet, prefix = '')
end
如果我重新排序参数,它可以正常工作。我没有使用过splat但我不知道参数
出了什么问题答案 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