2017-10-16 1 views
3

나는 lua를 처음 사용했다. 나는 파일로부터 테이블 읽기와 관련된 쿼리를 가지고있다. 나는 루아 테이블 형식의 설정 파일이 있습니다 예 :루아 테이블을 포함하는 설정 파일을 읽는 방법

return { 
    ["param1"] = { 
     ["attribute"] = { 
      ["myparam"] = 1, 
     }, 
    ["param2"] = 1 
} 

가 어떻게이 파일을 읽어 내 config 파일 매개 변수를 액세스합니까? 다른 루아 스크립트를 사용하여 설정 파일을 읽고 싶다면

+1

확인되지 않은 코드가 포함 된 구성 파일은 좋은 생각이 아닙니다. 이걸로 조심해. – Matt

+1

첫 번째 "param1"테이블을 닫을 때'} '를 잊어 버렸다. –

답변

2

:

를 configdata의 =이 '필요'("에서 configFile")

주 필요한 경우에만 루아 - 파일을로드 할 수 있습니다. 또한 'require'를 사용할 때 '.lua'확장명을 포함하지 마십시오.

+0

"어려운 방법"은 완전히 허튼 소리이다. 당신은 파일을 줄 단위로 읽고 다시 연결합니다 (2 차적으로 천천히! 파일을 열고': read "* a"'- 내용을 변경하지 않습니다). 그런 다음 결과를'loadstring '(원하는만큼 자주 호출 할 수있는 함수)하지만 즉시 호출하여 내부 코드를 래핑하여 실제 코드를 함수로 전역 변수에 할당합니다. 'configData = loadfile "config.lua"는 5 줄과 같은 효과가 있습니다. – nobody

+0

@nobody 댓글을 쓰는 방법은 완전히 허튼 소리입니다. 나에게 모욕하지 않고 io.lines 대신에 "a"를 사용하라. 또한 바보라고 부르기 전에 "하드"모드 뒤에있는 이유를 읽어보십시오. 나는 루아를 인터넷이 아니라 책으로 배웠다. 따라서 코드를 작성하는 제 방식은 귀하와 많이 다를 수 있습니다. 그러나 이것이 귀하의 좌절감을 이런 식으로 표현해야한다는 것을 의미하지는 않습니다. 이 웹 사이트는 학습을 목적으로 한 것이지 코드 작성에 어리석은 사람을 부르는 것이 아닙니다. 하지만 thx, 나는 '을 사용합니다 : * a "대신에 –

+0

(Side-branch :)"실수로 2 차적인 "코드를 호출하는 IMHO가 적당합니다. 당신은 의도적으로 그 효과가 아니었던 것을 개인적으로 받아들이고있는 것 같습니다. 미안합니다. 반복되는 연결이 얼마나 나쁜지 보려면'local c = ""; i = 1, 1e6의 경우 do c = c .. "." end' 대'local t = {}; i = 1, 1e6의 경우 do [i] = "." 끝; 로컬 c = table.concat (t)'. 둘 모두 1M 문자를 연결하는 동일한 작업을 수행하지만 두 번째 작업에는 0.5 초가 걸리지 만 첫 번째 작업에는 3 분 _이 걸립니다! (내가 왜 그 쓰레기를 말하는지 보아라.) 그래서 : 루프 안에서 연결하면, 결국 테이블 &'table.concat'에 누적된다! – nobody

2

응용 프로그램 소스의 설정 파일 require 만 입력하면됩니다.

local config = require "config" 
+1

'require'는 * file * 이름이 아닌 * module * 이름을 허용합니다. – lhf

+0

@lhf ah yes. 그것에 대해 잊어 버렸습니다. 결정된. – hjpotter92

관련 문제