2012-05-15 39 views
1

我有下面的數組,用於稍後在Excel文件中寫入標題。在Ruby中設置數組元素(字符串)作爲變量名稱

fields = ["fileName", "type", "id"] 

然後我有下面的代碼,從一個XML讀取值:爲了設定了Excel細胞在提取的值

filename = xml.xpath('//path/filename').text 
type = xml.xpath('//path/type').text 
id = xml.xpath('//path/id').text 

的I迭代初始陣列(場)前面的步驟:

row = 2 
c = 1 
fields.each do |content| 
    ws.Cells(row,c).Value = content 
    c = c + 1 

我想有數組(fields)內容的變量名,而不是字符串,以便能夠重複使用的頭字段。

任何人都可以推薦一種使它成爲可能的方式嗎?

+0

任何時候你發現自己想要查找本地變量使用代碼,或使用代碼局部變量,你應該意識到這是「代碼味道」,你應該使用像哈希或數組,或結構化對象的集合。 – Phrogz

回答

2

這聽起來像你需要使用一個Hash字段名給你提取的值相關聯:

fields = { 
    "fileName" => xml.xpath('//path/filename').text, 
    "type" => xml.xpath('//path/type').text, 
    "id" => xml.xpath('//path/id').text 
} 

row=2 
c=1 
fields.each do |key,value| 
    ws.Cells(row,c).Value = value 
    c=c+1 
end 
+0

更好:'values = {}; fields.each {| name |值[name] = xml.at_xpath(「// path /#{name}」)。}} – Phrogz

+1

@Phrogz好了,我想過了,但我認爲fileName與filename不是拼寫錯誤。 – SirDarius

+0

好點。我甚至沒有注意到這種差異。 – Phrogz