2013-07-30 12 views
4

這毫無疑問是個有點古怪的問題,更換陣列中的每一個項目,但我需要在一個陣列基本上空的每一個項目(但保留項目本身)。一個空項

舉例來說,如果我有這樣的數組:[ 0, 5, 4, 7, 1 ]

我需要將其更改爲:[ '', '', '', '', '']

我使用Ruby 1.9.3。

我正在使用的一些製圖軟件都需要標籤的數組並隱藏這些標籤的唯一途徑是使相關項目的空白。是的,跛腳。

+2

必須是就地操作? (請注意,無論使用哪種方法,您都會失去參考透明度) – tokland

+0

您能澄清「但保留項目本身」嗎?你的意思是「我想返回在變量上執行函數的結果而不改變底層變量的值」?如果是這樣,請參閱下面的答案! –

回答

5

Enumerable#map替換的每一個元素與調用塊的結果:

array = [ 0, 5, 4, 7, 1 ] 
array.map { '' } 
#=> ['', '', '', '', ''] 

如果你想變異原始(如果我明白你的問題,這是你做想要做的正是) ,然後使用#map!

array.map! { '' } 
array 
#=> ['', '', '', '', ''] 
+0

這正是我所需要的。謝謝Aaron! – Shpigford

+2

還有'Array.new(N, '')'和'Array.new(N){ ''}'(哪個版本使用取決於發生了什麼數組)。總是有'[''] * n'(它遇到與Array.new(n,'')'相同的問題)。 –

+0

另外'[ ''] * N'將產生'N'元件陣列與每一個元件是' '''。所以'[''] * array.count'會給出相同的結果(但是稍微不那麼幹淨的IMO)。 –

相關問題