목록분류 전체보기 (167)
알맹이방
dofile : 파일에서 루아 청크를 읽어 오는 작접만 처리하고 이를 실행하지는 않는다. 청크를 컴파일해서 컴파일된 청크를 함수로 반환한다. loadfile : dofile + dofile과는 다르게 청크에 문제가 있으면 오류를 발생하지 않고 오류 코드를 반환한다. -> 사용자가 오류 처리할 수 있도록 함 간단한 작업을 할 때에는 호출 한 번으로 처리할 수 있는 dofile을 쓰는 것이 편하다. 하지만 파일의 내용을 여러 번 실행하는 경우, lodadfile을 한 번 호출하고 반환 받은 함수를 여러 번 호출하게 처리할 수 있다. 그러면 dofile처럼 여러 번 컴파일하지 않고 한 번만 컴파일 할 수 있다. load : 청크를 문자열에서 읽어옴 f = load("i = i + 1") i=0 f(); pri..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dH6b7w/btrG24OELLW/EEgzwmTZkUUSgrKKrlfZI1/img.png)
일단 출력은 같았다. 어떤 차이가 있는 걸까? pairs()키-값 쌍을 반환하며 주로 연관 테이블에 사용됩니다. 키 순서가 지정되지 않습니다. ipairs()인덱스-값 쌍을 반환하며 주로 숫자 테이블에 사용됩니다. 배열의 숫자가 아닌 키는 무시되지만 인덱스 순서는 중요합니다(숫자 순서). 예시 코드 ipairs는 숫자로된 인덱스만 적용한다. pairs는 숫자가 아닌 인덱스도 적용된다.
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 테이블 생성자는 반환하는..