相关疑难解决方法(0)

Ruby 参数签名中的尾随逗号

我很好奇 Ruby 中的块中是否有尾随逗号。

例如:

[[1, 2], [3, 4]].collect { |x, | x }
# returns [1, 3]
Run Code Online (Sandbox Code Playgroud)

就好像第一个参数后面有一个可选参数。

然而:

(proc { |x, | x }).arity
# returns 1
Run Code Online (Sandbox Code Playgroud)

如果 arity 为 1,则数组不应在 X 上分解。

检查(proc { |x, | x }).parameters没有提示这是任何“秘密”第二个参数。

是否有内省的方法来区分proc { |x, | }与 不同proc { |x| }

我了解分解等的基础知识,并且我可以看到尾随逗号有效地在 |x, | 中创建了一个“秘密”参数。和|x,_| 工作相同。

但令我惊讶的是,除了进入 AST 之外,没有任何内省的方法可以发现尾随逗号的存在。这真是令人惊讶。

ruby

4
推荐指数
1
解决办法
314
查看次数

标签 统计

ruby ×1