12
我不会在这里重复我的问题,但有没有更有效的方式来写这个?更高效的Ruby方法将对象数组中的属性映射到另一个数组?
def recruits_names
names = []
for r in self.referrals do
names << r.display_name
end
return names
end
我不会在这里重复我的问题,但有没有更有效的方式来写这个?更高效的Ruby方法将对象数组中的属性映射到另一个数组?
def recruits_names
names = []
for r in self.referrals do
names << r.display_name
end
return names
end
使用map
方法:
返回与在枚举每一次元件运行块的结果的新的数组。
def recruits_names
self.referrals.map { |r| r.display_name }
end
[更新]如Staelen评价表明,本实施例甚至可以进一步简化为:
def recruits_names
self.referrals.map(&:display_name)
end
对于好奇,这是因为&
呼叫to_proc
在对象上下面它(当在方法调用中使用时),并且Symbol
执行to_proc
以返回Proc
,该Proc
执行由产生给该块的每个值上的符号所指示的方法(参见the documentation)。
你也可以放弃'self'。它已经暗示 – edgerunner 2011-03-07 06:24:09
Ruby非常直观,以至于答案实际上已经包含在问题中:-)“更高效的Ruby方法来映射**属性[...]”你不喜欢吗? – 2011-03-07 16:58:55
如果您想要返回多个属性,但不是全部? – Steve 2012-03-11 03:10:41