我很好奇 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 ×1