为什么 `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}
这段代码中的两行:
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}