Không có toán tử &:
trong Ruby. Những gì bạn thấy là nhà điều hành &
áp dụng cho một số :symbol
. Trong một danh sách đối số phương thức, toán tử &
có toán hạng của nó, chuyển đổi nó thành đối tượng Proc
nếu chưa có (bằng cách gọi to_proc
đối tượng đó) và chuyển cho phương thức như thể một khối đã được sử dụng.
my_proc = Proc.new { puts "foo" }
my_method_call(&my_proc) # is identical to:
my_method_call { puts "foo" }
Vì vậy, câu hỏi bây giờ trở thành "không Symbol#to_proc
làm gì?", Và đó là dễ dàng nhận thấy trong the Rails documentation:
Biến biểu tượng thành một proc đơn giản, đó là đặc biệt hữu ích cho enumerations. Ví dụ:
# 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)
Đây là một bản sao của không ít hơn 17 câu hỏi khác mà đã được hỏi và trả lời ở đây trên StackOverflow: [Understanding \ [ClassOne , ClassTwo \] .each \ (&: my_method \)] (http://StackOverflow.Com/q/99318/), [Bản đồ (&: name) 'có nghĩa là gì trong Ruby?] (Http: // StackOverflow.Com/q/1217088/), [Chính xác là gì 'và: viết hoa' trong Ruby?] (Http://StackOverflow.Com/q/1792683/), [Ruby/Ruby on Rails dấu và phím tắt dấu hai chấm] (http : //StackOverflow.Com/q/1961030/), [Ruby: '&: symbol' syntax] (http://StackOverflow.Com/q/2096975/),… –
… [Đây là gì '&: last' Ruby Construct Called?] (Http://StackOverflow.Com/q/2211751/), [Bạn gọi toán tử' &: 'trong Ruby là gì?] (Http://StackOverflow.Com/q/2259775/), [Bản đồ (&: name) 'làm gì trong mã Ruby này?] (Http://StackOverflow.Com/q/2388337/), [là gì: + 'và' & + 'trong ruby?] (http://StackOverflow.Com/q/2697024/), [' &: views_count' trong 'Post.published.collect (&: views_count)'] (http: // StackOverflow.Com/q/3888044/), [Ruby Proc Syntax] (http://StackOverflow.Com/q/4512587/), [Làm thế nào để "' (1..4) .inject (&: +) '" làm việc trong Ruby] (http://StackOverflow.Com/q/5003257/),… –
… [Câu lệnh sau '&: property'?] (http://StackOverflow.Com/q/5620411/), [ '&' Có nghĩa là gì trong cú pháp ruby sau đây?] (Http://StackOverflow.Com/q/5952175/), [Tại sao một người dùng toán tử đơn nhất trên một thuộc tính trong ruby? tức là '&: first'] (http://StackOverflow.Com/q/6289084/), [làm thế nào để' Array # map' có tham số để làm một cái gì đó như thế này?] (http://StackOverflow.Com/q/ 6716629 /), và [có nghĩa là gì '&:' có nghĩa là trong ruby, nó là một khối pha trộn với một biểu tượng?] (Http://StackOverflow.Com/q/9188362/). –