2014-04-17 44 views
0

我今天已經寫了幾CSV出口,我想不出來寫這個更簡單更優雅的方式:是否有一個簡短的方法來派生這個簡單的分隔數組整數?

numbered_questions = '' 
question_count.times{|i| numbered_questions << (i + 1).to_s + (i == (question_count - 1) ? '' : ',')} 

所以基本上,如果我的question_count5,那麼我的結果將是:

1,2,3,4,5 

任何人都知道從動態整數的輸入中獲得相同結果的更短路嗎?

+1

你能告訴我的邏輯..你的代碼是非常複雜的.. :( –

+1

我同意 - 一些示例輸入和輸出將是有用的 –

+0

因此,如果我有'3'的動態數字,那麼我想'1,2,3',或者如果我有'4',我想要'1,2,3,4'。兩個結果都應該是一個String。 – Trip

回答

2

Range可以String

=> ("1".."5").to_a*',' 
=> "1,2,3,4,5" 

和更短:

=> [*"1".."5"]*',' 
=> "1,2,3,4,5" 

最前一頁*splat操作,最後*重複 - 一個字符串參數,相當於ary.join(str)否則,返回通過連接的self整型副本建立了一個新的數組。

+0

哇,我從來沒有見過astrisk使用這種方式,這是什麼意思? – Trip

+1

只是'splat'運算符。 –

+0

我必須給它你,這是*最短的*答案 – Trip

2

我不知道你想要什麼,但如果它只是爲了讓數字數組從1到N,那麼你可以做

(1..N).to_a 

如果你想讓它作爲一個字符串,然後做

(1..N).to_a.join(",") 
+0

這是非常明智和正確的目標。非常感謝Max Williams。 – Trip

+1

cool。btw'1..N'是'Range'對象。http://www.ruby-doc.org/core-1.9.3/Range.html –

相關問題