Non c'è un operatore &:
in Ruby. Quello che stai vedendo è l'operatore &
applicato a un :symbol
.
Nell'elenco metodo argomento, l'operatore prende il &
operando, lo converte in un oggetto Proc
se non è già (chiamando to_proc
su di esso) e lo passa al metodo come se fosse stato usato un blocco.
my_proc = Proc.new { puts "foo" }
my_method_call(&my_proc) # is identical to:
my_method_call { puts "foo" }
Quindi la questione ora diventa "Che cosa Symbol#to_proc
fare?", E che è facile da vedere in the Rails documentation:
Attiva il simbolo in un semplice proc, che è particolarmente utile per le enumerazioni. Esempi:
# 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)
Questo è un duplicato di altri meno di 17 domande che sono state già chiesto e ha risposto qui su StackOverflow: [Understanding \ [ClassOne , ClassTwo \] .each \ (&: my_method \)] (http://StackOverflow.Com/q/99318/), [Cosa significa 'map (&: name)' in Ruby?] (Http: // StackOverflow.Com/q/1217088/), [Che cosa è esattamente '&: capitalize' in Ruby?] (Http://StackOverflow.Com/q/1792683/), [Ruby/Ruby on Rails e una scorciatoia del colon] (http : //StackOverflow.Com/q/1961030/), [Ruby: '&: symbol' syntax] (http://StackOverflow.Com/q/2096975/), ... –
... [Cos'è questo '&: last' Ruby Construct Called?] (Http://StackOverflow.Com/q/2211751/), [Come si chiama l'operatore' &: 'in Ruby?] (Http://StackOverflow.Com/q/2259775/), [cosa fa 'map (&: name)' fa in questo codice Ruby?] (Http://StackOverflow.Com/q/2388337/), [Cosa sono ': + 'e' & + 'in ruby?] (http://StackOverflow.Com/q/2697024/), [' &: views_count' in 'Post.published.collect (&: views_count)'] (http: // StackOverflow.Com/q/3888044/), [Sintassi di Ruby Proc] (http://StackOverflow.Com/q/4512587/), [Come funziona "(1..4) .inject (&: +)' " lavoro in Ruby] (http://StackOverflow.Com/q/5003257/), ... –
... [Cosa significa la seguente istruzione '&: property'?] (http://StackOverflow.Com/q/5620411/), [ Cosa significa '&' nella seguente sintassi del ruby?] (Http://StackOverflow.Com/q/5952175/), [Perché si dovrebbe usare l'operatore unario su una proprietà in ruby? es. '&: first'] (http://StackOverflow.Com/q/6289084/), [in che modo' Array # map' ha parametri per fare qualcosa del genere?] (http://StackOverflow.Com/q/ 6716629 /), e [cosa significa '&:' significa in ruby, è un blocco combinato con un simbolo?] (Http://StackOverflow.Com/q/9188362/). –