我不会在这里重复我的问题,但是有没有更有效的方式来写这个?
def recruits_names
names = []
for r in self.referrals do
names << r.display_name
end
return names
end
最佳答案
使用 map
方法:
Returns a new array with the results of running block once for every element in enum.
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
,它在每个产生给 block 的值上执行由符号指示的方法(参见 the documentation)。
关于ruby - 将对象数组中的属性映射到另一个数组的更有效的 Ruby 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5216275/