这个语法在Ruby中意味着什么? ..tasks.all?(&:complete?)

时间:2019-06-30 08:24:51

标签: ruby-on-rails ruby

我正在遍历Rails 5 Test Prescriptions中的示例项目-构建健康的代码库(出版日期:2018年),并遇到此方法:

SELECT 
    RB.CustomerId AS ID, C.FullName AS 'FULL NAME', 
    C.PhoneNumber AS 'PHONE NUMBER', 
    COUNT(RB.CustomerId) AS BOOKS 
FROM  
    RentedBooks RB
JOIN 
    Customers C ON RB.CustomerId = C.Id
GROUP BY  
    C.FullName, C.PhoneNumber, RB.CustomerId;

语法对我来说真的很奇怪,因为我刚学习Ruby&Rails超过一个月。.任何提示我指向应该阅读的地方的提示都将非常感谢

1 个答案:

答案 0 :(得分:1)

&用于将块作为方法传递给方法(也使用参数列表中的另一种方法将隐式块作为参数),它对传递的对象隐式调用to_proc

Symbol#to_proc for :symbol产生proc{|param| param.symbol }

所以您的代码等于tasks.all?{|task| task.complete? }