這是我的數組:Apply方法在陣列/每個元素枚舉
array = [:one,:two,:three]
我想申請to_s
方法我所有的數組元素得到array = ['one','two','three']
。
我該怎麼做(把enumerable的每個元素轉換成其他東西)?
這是我的數組:Apply方法在陣列/每個元素枚舉
array = [:one,:two,:three]
我想申請to_s
方法我所有的數組元素得到array = ['one','two','three']
。
我該怎麼做(把enumerable的每個元素轉換成其他東西)?
這將工作:
array.map!(&:to_s)
array.map!(&:to_s) - 在1.8版本中不會使用這個工作嗎? –
它確實在Ruby 1.8.7中有效。我把它用在我的項目中。 –
Symbol#to_proc在1.8.6中不可用,但在1.8.7中可用:http://apidock.com/ruby/Symbol/to_proc。我也從個人經驗中瞭解到這一點,因爲我不使用Rails或其庫。 –
array.map!(&:to_s)
將原始數組修改爲['one','two','three']
array.map(&:to_s)
返回陣列y ['one','two','three']
。@sawa:其實並非如此。 Ruby-On-Rails實際上是一種編程語言,與Ruby有關的問題更多。但就像Perl,CLU和SmallTalk一樣,Ruby已經將其最好的一部分融合到了它的語言中。 ;)http://xkcd.com/386/ –
@Andrew好吧。謝謝。在你給出一些之前,我刪除了我的評論。 – sawa
對於那些想知道我在幽默地回答什麼的人,@sawa基本上問了回答者是否知道Ruby是一種語言,並且Rails是一個運行在Ruby上的框架,因爲@sawa認爲Symbol#to_proc僅僅是Rails 1.8 0.7。 –
值得一提的是,如果你有對象的數組,你要單獨進入的方法有不同的來電者,像這樣:
# erb
<% strings = %w{ cat dog mouse rabbit } %>
<% strings.each do |string| %>
<%= t string %>
<% end %>
您可以使用method
方法與塊擴展相結合行爲簡化:
<%= strings.map(&method(:t)).join(' ') %>
如果你不熟悉,什麼method
確實是封裝與傳遞給它的一個Proc符號相關聯的方法,並返回它。 &符將這個Proc擴展成一個塊,它很好地傳遞給map
。 map
的返回是一個數組,我們可能想要更好地格式化它,因此join
。
需要注意的是,與Symbol#to_proc
一樣,您不能將參數傳遞給輔助方法。
謝謝,這真是一個不錯的訣竅! – antinome
可能重複[在Ruby中將整數數組轉換爲字符串數組](http://stackoverflow.com/questions/781054/convert-an-array-of-integers-into-an-array-字符串中的紅寶石) – Nakilon