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