我正在尋找執行此凌亂程序邏輯的功能的方法:使用不同的分隔符連接數組值的功能方法?
values = [a, b, c, d, e, f]
last_value = nil
string = ""
values.each do |v|
string << if last_value && last_value.special?
"/x/" + v.name.to_s
else
"/" + v.name.to_s
end
last_value = v
end
我基本上有對象(所有相同類型)的陣列,並且需要加入他們#name
屬性,但以下內容的對象,該對象有一個特殊的特點,我需要一個不同的分隔符。
這是一個容易解決的問題,但我正在尋找最乾淨,功能最強大的方法。我第一次潛入#inject
,但是在每次迭代中你失去了以前的值,所以我無法完成這項工作。有任何想法嗎?
我喜歡張貼實際的代碼,而不是僞代碼,但它確實密集,複雜的DataMapper關係的東西,所以你很可能不只是運行它無論如何,抱歉:(
實際上,我發佈的代碼存在缺陷,因爲我需要在最後刪除前導斜槓......它不僅僅是在值之間進行連接。 – d11wtq
你能否詳細說明「特殊」部分?做一個/ x /需要在任何特殊之前,如果其中一個特殊值或特殊值之後的任何特殊值之後? –
/x /需要在任何特殊的後面*,但不應該在輸出字符串的末尾完成,它應該只出現在中間(如'Array#join')。 – d11wtq