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

时间:2015-06-05 23:05:38

标签: ruby ampersand

此代码中的两行:

RewriteEngine On
RewriteBase /testwebsite/
#redirect index.php to the pretty URL
RewriteCond %{THE_REQUEST} [A-Z]{3,}\ /testwebsite/index\.php
RewriteRule ^ home? [R=301,L]
#internally rewrite pretty URL to index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/?$ index.php [L]

返回完全相同的数组p ["9", "6", "4"] p %w(9 6 4) 。但是["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)是字符串数组的快捷方式。为什么它不以同样的方式工作?

UPD

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

1 个答案:

答案 0 :(得分:2)

您的第二个示例是传递原始块而不是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}