2012-03-29 51 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? }