2013-07-17 21 views
0

我有數組是這樣的:加入紅寶石數組的值,但保持其類型

a = [27624, 
    22, 
    33, 
    "ema", 
    "test", 
    11, 
    nil] 

當我做a.join(',')我得到一個兵字符串值連接起來。我怎樣才能獲得相同的效果,但僅限於我的字符串保留其類型。輸出應該是這樣的:

"27624, 22, 33, 'ema', 'test', 11" 

回答

5
a.map{|e| e.is_a?(String) ? "'#{e}'" : e}.join(',') 

或者:(這可能並不總是有預期的效果 - 尤其是對nil,以及你在這裏沒有包括一些其他類型)

a.map(&:inspect).join(',') 
+0

是的,第二部分完全工作,看起來優雅。你能否詳細說明'a.map(&:inspect)'部分。我的意思是我知道.map {| block |塊}但是'&:inspect',那是什麼。有沒有我可以閱讀的鏈接? –

+0

@GandalfStormCrow ['map(&:name)在Ruby中的含義是什麼?'](http://stackoverflow.com/questions/1217088/what-does-mapname-mean-in-ruby) –

+1

我認爲你需要緊湊加入之前。 – sawa