목록Study/Lua (8)
알맹이방
6장. 루아 함수의 내부 루아에서는 함수가 1급 값이므로 전역 변수 뿐만 아니라 지역변수나 테이블의 필드에도 함수를 담을 수 있다. 함수를 테이블의 필드로 사용하는 것은 모듈과 객체 지향 프로그래밍 같은 고급 활용에 아주 필수적인 요소이다. 클로저 함수 안에서 다른 함수를 정의할 때 바깥쪽 함수의 모든 지역 변수를 안쪽에 정의하는 함수에서 쓸 수 있다. 이런 기능을 정적 범위 지정이라고 한다. function newCounter() local i=0 return function() i=i+1 return i end end 이 때는 이미 변수 i의 유효 범위를 벗어난 상태이다. 그럼에도 불구하고 이런 코드가 제대로 동작하는데, 이는 루아에서 클로저라는 개념을 지원하기 때문이다. 클로저 간단 설명 : 함수와..
function nonils(...) local arg = table,pack(...) for i =1, arg.n do if arg[i] == nill then return false end end return true end print(nonils(2,3,nil)) -->false print(nonils()) -->true 1. function 남는 인자는 버려지고 인자가 모자란 경우 해당 매개변수는 nil이 된다. f(2) -- 3 nill f(2, 3) -- 2, 3 f(2, 3, 4) -- 2, 3 (4는 버려짐) 루아의 함수는 여러 값을 반환할 수 있다. s, e = string.find("hello lua users", "lua") print(s, e) -- 7, 9 테이블 생성자는 반환하는..
할당문 1. 다중 할당문 지원 a, b = 10, 2*x -- a == 10, b == 2*x ex) x, y = y, x -- x와 y 값을 swap -- 대입할 값의 개수와 값을 대입할 변수의 개수가 맞지 않을 경우 맞춰준다. a, b, c = 0, 1 -- a==0, b==1, c==nil a, b = a+1, b+1, c+1 -- a==a+1, b==b+1, c+1의 값은 무시됨 2. 지역 변수와 전역 변수 j = 10 -- 전역 변수 local i = 1 -- 지역 변수 local 지역변수는 선언된 스코프 안에서만 쓰임 do end 문으로 지역변수의 스코프를 좁게 조절할 필요가 있을 때 쓰인다. do local a2 = 2*a local a3 = 1 ... end -- a2와 a3는 여기서 사용..
다른 언어와 다른 점이나 특히 기억에 남는 점을 기술 0. 값 print(type(nil)==nil) --false-- (왜냐하면 nil이라는 string을 반환하기 때문에 nil이 아니다.) 1. 인덱스 루아는 다른 언어와는 달리 인덱스가 1로 시작한다. 2. 테이블 루아의 거의 유일한 자료구조인 테이블은 객체이다. a.x은 a["x"]과 같음. 3. 함수 루아의 함수는 변수에 저장할 수 있다. 루아의 함수는 다른 함수의 인자로 넘길 수 있다. 루아의 함수는 다른 함수의 반환 받을 수도 있다. C로 작성한 함수도 호출할 수 있다. 4. string과 number .. : 문자열 합성 (print("A" .. "B")) string이 필요한 곳에는 number가 string이 된다. (..) number..