你如何使用Symbol#to_proc语法编写以下内容?
[[a,1],[b,2],[c,3]].map { |r| r[0] }
Run Code Online (Sandbox Code Playgroud)
这给出了参数数量错误的错误.但我不知道在哪里给索引参数.
[[a,1],[b,2],[c,3]].map &:[] # Where to put the index 0 ?
Run Code Online (Sandbox Code Playgroud)
我更喜欢第一种形式,我只是想知道如何使用它&:.
你不能.您只能传递没有参数的方法.在您的情况下,您需要0作为参数提供,您只能使用块语法.
另一方面,您可以实现相同的使用first方法:
[[a,1],[b,2],[c,3]].map(&:first)
Run Code Online (Sandbox Code Playgroud)
编辑:
Joerg和tokland的答案都激励我进行一些实验.你实际上可以这样做:
arr = [[:a, 1], [:b, 2], [:c, 3]]
arr.each_with_object(0).map(&:[])
#=> [:a, :b, :c]
arr.each_with_object(1).map(&:[])
#=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)