首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails 3编程问题

Ruby on Rails 3编程问题
EN

Stack Overflow用户
提问于 2010-09-22 16:42:28
回答 1查看 136关注 0票数 2

正确:

代码语言:javascript
复制
@teammates = Roster.all.sort_by(&:level)

失败:

代码语言:javascript
复制
@teammates = Roster.all.sort_by(:level)

:级别的& infront做了什么?它的行为是否像C++中的引用?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-22 17:13:58

&symbol表示法是Rails添加的一些语法糖。它被称为symbol to_proc,可用于任何期望接收Proc的方法。

Array.sort_by需要一个proc,这就是传递符号失败的原因。symbol to_proc语法安排接收方(在本例中为sort_by )接收一个proc,其中包含要在proc中调用的方法的名称。

代码语言:javascript
复制
@teammates = Roster.all.sort_by(&:level)

等同于

代码语言:javascript
复制
@teammates = Roster.all.sort_by{ |obj| obj.level }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3767604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档