2011-01-30 35 views
1

我有一組字符串,我想通過運行一個函數來進行通用變換,例如,add_underscore(string)變換集合

是否有一種本地語法的方式來做到這一點沒有迭代代碼?

+0

出於好奇,你使用`Set`還是`Array`? – 2011-01-30 21:53:02

+0

A設置爲了利用其可搜索性。 – inyourcorner 2011-01-30 22:23:51

回答

4

您可以使用map將函數應用於集合中的每個元素。

>> a = [ "a", "b", "c", "d" ] 
=> ["a", "b", "c", "d"] 
>> a.map { |x| x.upcase } 
=> ["A", "B", "C", "D"] 
+0

太好了,謝謝! – inyourcorner 2011-01-30 21:23:02

3

大廈上的MYYN的答案...

set = [ 'one', 'two', 'three', 'four' ] 

# in Ruby 1.9 this: 
set.map &:capitalize # => [ 'One', 'Two', 'Three', 'Four' ] 

# is the same as this: 
set.map { |x| x.capitalize } 

注意map返回一個新的陣列,它不修改現有的一個。此外,它使用enumerable來遍歷數組中的每個項目;它仍然是這樣做的最好方式,只是認爲你可能會關心知道。