2011-04-17 23 views
0

巡航能力尾隨逗號如果我這樣做:如何加入用逗號整數結尾沒有

users.each do |u| 
    str += u.id.to_s + ',' 
end 

我將結束:

1,3,234,234, 

是否有循環是一種風格最後不會離開尾部','?我知道我可以在循環後將它關閉,但正在尋找一種方法來做到這一點,而不必這樣做。

回答

8

或者更短:

users.map(&:id).join ',' 
+0

是的,我想通了,但是在打字前查找#join的時間浪費了。接得好。 – DigitalRoss 2011-04-17 01:10:38

+0

是的,任何讓你編寫代碼的東西都不錯:) – DanneManne 2011-04-17 01:14:26

+0

@DanneManne根本不是真的。代碼「簡單性」和「可讀性」之間有一條實用的界限,它們經常會朝着前者的方向傾斜。並不是說你已經通過這個特定的解決方案,但是對於你的一般性評論,我不得不強烈反對。鑑於你的答案實際上對我有幫助,我已經適當地對它進行了優化。謝謝! – dooleyo 2013-05-12 21:34:26

3
users.map { |u| u.id.to_s }.join ',' 

而實際上,#join會做#to_s給你,所以在第二個想法:

users.map(&:id).join ',' 
+0

你能解釋一下什麼地圖是幹什麼的? &:id是一個塊? – Blankman 2011-04-17 01:15:06

+1

@Blankman:查閱「Symbol#to_proc」的文檔。基本上它的作用相當於'{| u | u.id}'。 – 2011-04-17 14:23:35

+0

對,Ruby應該有一個常見的錯誤API文檔位置的FAQ。 '&'總是將塊轉換爲proc,或者像在這種情況下將proc轉換爲塊。 '&'操作將嘗試使用#to_proc將任何非proc參數轉換爲proc。碰巧,如果你在覈心API文檔中查找'class Symbol',你會發現'#to_proc',它是一個簡單的方法調用塊。 – DigitalRoss 2011-04-17 20:14:41