b.map(&:to_s)中&:to_s的含义是什么

时间:2014-04-13 09:24:20

标签: ruby

我是红宝石的新手,这个问题对你来说似乎很愚蠢,但我没有找到任何合理的解释。

例如我有

array = [1,2,3,4,5,6]

我想从这个字符串数组中出于某些原因

其中一种方法是这样做:

str_arr = array.map {|i| i.to_s}

在某些网络资源上我发现了以下内容:

array.map(&:to_s)

这也是一样的。有人可以解释&:to_s的含义吗?

1 个答案:

答案 0 :(得分:2)

它是语法糖,将to_s转换为可以传递给map的块,有点像将to_s作为函数对象传递。基本上,它是

的简写
array.map(&:to_s.to_proc)

# Or to see the individual steps:
proc = :to_s.to_proc
array.map(&proc)

另见What does map(&:name) mean in Ruby?