ruby中“&:”运算符的function是什么?

可能重复:
在Ruby中map(&:name)是什么意思?

我遇到了一个代码片段,有以下几点

a.each_slice(2).map(&:reverse) 

我不知道&:操作符的function。 这是如何工作的?

2 Solutions collect form web for “ruby中“&:”运算符的function是什么?”

Ruby中没有&:操作符。 你所看到的是应用于:symbol&运算:symbol

在一个方法参数列表中, &操作符取其操作数,如果它还没有(通过调用to_proc )将其转换为Proc对象,并将其传递给该方法,就像已经使用了一个块一样。

 my_proc = Proc.new { puts "foo" } my_method_call(&my_proc) # is identical to: my_method_call { puts "foo" } 

所以现在的问题变成了“ Symbol#to_proc做什么?”,这在Rails文档中很容易看到:

将符号变成一个简单的proc,这对枚举特别有用。 例子:

 # The same as people.collect { |p| p.name } people.collect(&:name) # The same as people.select { |p| p.manager? }.collect { |p| p.salary } people.select(&:manager?).collect(&:salary) 

通过在符号前面加上一个符号,你正在创build一个lambda函数,它将在你传递给这个函数的对象上调用这个符号的名字。 考虑到这一点:

 ar.map(&:reverse) 

大致相当于:

 ar.map { |element| element.reverse } 
  • ruby散列值的数组
  • 水豚:未定义的方法'访问'
  • 如何让Ruby / Homebrew / RVM在优胜美地上工作?
  • 我需要为我的rails应用程序生成uuid。 我有什么select(gem)?
  • 使用回形针将file upload到Activeadmin Rails
  • 实例variables:self vs @
  • 在文件中添加一个新行?
  • 在Ruby中,“错误的参数数量(1代表0)”是什么意思?
  • 通过回形针保存来自URL的图像
  • Ruby on Rails中控制器之间重用代码的最佳实践
  • ruby离开了轨道