gpt4 book ai didi

ruby - 为什么非显式 splat 参数加上默认参数是 Ruby 1.9 中方法定义的错误语法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:27:26 27 4
gpt4 key购买 nike

我想问一下为什么在 Ruby-1.9.3-p0 中有一个带有默认值分配的 splat param1 和一个 param2,如下所示:


def my_method(*param1, param2 = "default");结尾

返回


SyntaxError: (irb):1: 语法错误,意外的'=',期待')'

我的解决方法是明确地将 param1 括在括号中,如下所示:


def my_method((*param1), param2 = "default");结尾

非常感谢

最佳答案

Ruby 无法在 splat 之后解析带有默认值的参数。如果您在 splat 后的参数中有默认赋值,Ruby 如何知道将变量赋值给什么?

def my_method(*a, b = "foo"); end

假设我然后调用 my_method:

my_method(1, 2, 3)

Ruby 无法知道 b 是否缺失,在这种情况下你希望 b 为 foo 而 a 为 [1,2,3],或者如果 b 存在,在这种情况下你希望它为 3。

关于ruby - 为什么非显式 splat 参数加上默认参数是 Ruby 1.9 中方法定义的错误语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com