2012-05-15 3 views
1

다음 배열을 가지고 있으며 나중에 Excel 파일에 헤더를 쓰는 데 사용합니다.배열 요소 (문자열)를 Ruby에서 변수 이름으로 설정하십시오.

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

그리고 I가있는 XML로부터 값을 판독하고 다음 코드 다음에 추출 된 값을 엑셀 셀을 설정하기 위해

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 | 값 : [이름] = xml.at_xpath ("// 경로/# {이름}"). 텍스트}' – Phrogz

+1

@Phrogz 글쎄, 나는 그것에 대해 생각했지만 fileName 대 파일 이름은 오타가 아니라고 가정했다. – SirDarius

+0

좋은 지적. 나는 불일치를 발견하지 못했다. – Phrogz

관련 문제