为什么 `map` 的快捷方式不起作用?

Why is shortcut with `map` not working?

这段代码中的两行:

p ["9", "6", "4"]
p %w(9 6 4)

return 完全相同的数组["9", "6", "4"]。但是第一行 map:

p ["9", "6", "4"].map(&:to_i)

工作正常,第二个:

p %w(9 6 4).map{&:to_i}

给出:

syntax error, unexpected &
p %w(9 6 4).map{&:to_i}

我也试过用护腕包裹它 (%w(9 6 4)).map(&:to_i),但没有成功。这段代码有什么问题? %w(...) 是字符串数组的快捷方式。为什么它的工作方式不同?


UPD

好的,我知道了。这是一个愚蠢的问题,但我不能删除这个问题,因为它已经有了答案。我投票关闭它..

你的第二个例子是传递原始块而不是 proc 符号。

改变

p %w(9 6 4).map{&:to_i}

p %w(9 6 4).map(&:to_i)

p %w(9 6 4).map {|n| n.to_i}