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

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

比如我有

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

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

其中一种方法是这样做:

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

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

 array.map(&:to_s) 

这也是一样的。 有人可以解释什么&:to_s意味着??

它是语法糖,将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) 

另请参见Ruby(&:name)在Ruby中的含义是什么? 。