Step By Step(Lua 데이터 영구화)

8985 단어 lua
1. 데이터 파일: 우리는 Lua에서 table의 구조를 이용하여 파일 형식을 정의할 수 있다. 즉, 파일의 데이터는 table에서 구성하고 초기화한 코드이다. 이런 방식은 Lua 프로그램에 매우 편리하고 뚜렷하다. 예를 들어 Entry {"Stephen Liu", "Male", "Programmer", "BS"} Entry {"Jerry Tian", "Male", "Programmer", "BS"} 주의해야 할 것은Entry {}는 Entry ({}) 와 같습니다. 위의 데이터 항목에 대해 적절한 Entry 함수를 정의할 수 있다면 이 데이터를 Lua 코드의 일부분으로 만들 수 있습니다.코드와 주석은 다음과 같습니다.
1 local count = 0
2 -- Entry , dofile , 。
3 function Entry() count = count + 1 end
4 dofile("d:/lua_data.conf")
5 print("number of entries: " .. count)
6
7 --
8 --number of entries: 2

위의 데이터 파일의 형식에 비해 우리는 더욱 뚜렷한'자설적 데이터'형식을 정의할 수 있다. 그 중에서 모든 데이터는 그 의미를 나타내는 간단한 설명을 수반한다.이러한 형식을 사용하면 앞으로 데이터 항목에 변화가 발생하더라도 우리는 아주 작은 변동 상황에서 이후의 호환성을 유지할 수 있다.Entry {name = "Stephen Liu",gender = "Male", job = "Programmer", education = "BS"} Entry {name = "Jerry Tian",gender = "Male", job = "Programmer", education = "BS"}
 1 local personInfo = {}
2 function Entry(b)
3 -- table b name personInfo key 。
4 if b.name then
5 personInfo[b.name] = true
6 end
7 end
8
9 dofile("d:/lua_data.conf")
10 for name in pairs(personInfo) do
11 print(name)
12 end
13
14 --
15 --Jerry Tian
16 --Stephen Liu

이 코드 세션들은 모두 이벤트 구동 방법을 채택한 것을 알 수 있다.Entry 함수는dofile을 실행할 때 데이터 파일의 모든 항목에 호출되는 리셋 함수입니다.Lua는 실행 속도가 빠를 뿐만 아니라 컴파일 속도도 빠르다.이는 Lua가 디자인 초기에 데이터 묘사를 Lua의 주요 응용 중 하나로 삼았기 때문이다.        2. 서열화: 자바나 C# 개발 경험이 있다고 믿는 사람들은 이 용어에 대해 낯설지 않다.데이터 대상을 바이트 흐름으로 변환한 후 IO를 통해 파일이나 네트워크로 출력하고 읽을 때 이 데이터를 원시 대상과 같은 값을 가진 새로운 대상으로 재구성하는 것이다.또는 실행 가능한 Lua 코드를 서열화된 데이터 형식으로 사용할 수도 있습니다.예를 들어: varname = , 여기 있는 는 변수를 계산하는 varname의 표현식을 표시합니다.다음 예제 코드는 루프가 없는 테이블을 시리얼화하는 데 사용됩니다.
 1 function serialize(o)
2 if type(o) == "number" then
3 io.write(o)
4 elseif type(o) == "string" then
5 --string.format "%q" 。
6 io.write(string.format("%q",o))
7 elseif type(o) == "table" then
8 io.write("{
")
9 -- table , value。
10 -- , table。
11 for k,v in pairs(o) do
12 -- k Lua 。
13 io.write(" ["); serialize(k); io.write("] = ")
14 serialize(v)
15 io.write(",
")
16 end
17 io.write("}
")
18 else
19 error("cannot serialize a " .. type(o))
20 end
21 end

좋은 웹페이지 즐겨찾기