2012-03-29 55 views
4

可能重复:
What does map(&:name) mean in Ruby?Ruby中的“temps.each(&:valid?)”是什么意思?

是什么在each发现&:valid?是什么意思? 我见过.each do |r|或其他,但不知道这个如何工作?

+1

我认为这只是'temps.collect {| t | t.valid == true}' – 2012-03-29 13:52:23

+0

你可以阅读更多关于它[这里](http://kconrails.com/2010/12/01/ruby-enumerable-primer-part-2-unary-ampersand-operator/) – Christian 2012-03-29 14:03:36

+1

这是一个不少于17个其他问题的复本,这些问题已经在StackOverflow上提出并解答:[Understanding \ [ClassOne,ClassTwo \] .each \(&:my_method \)](http://StackOverflow.Com/q/99318 /),[Ruby中'map(&:name)'的意思是什么?](http://StackOverflow.Com/q/1217088/),[Ruby中的'&:capitalize'究竟是什么? ](http://StackOverflow.Com/q/1792683/),[Ruby/Ruby on Rails和符号冒号捷径](http://StackOverflow.Com/q/1961030/),[Ruby:'&:symbol'语法](http://StackOverflow.Com/q/2096975/),... – 2012-03-29 14:53:54

回答

10

&被称为to_proc运算符。它将符号(:valid?)扩展为Proc。 所以你的例子相当于:

temps.each { |t| t.valid? }