2.Lua의 변수

2024. 1. 29. 13:15개발공부/LUA

변수

변수는 루아에 있는 저장 영역에 부여된 이름일 뿐입니다. 

함수와 테이블을 포함하여 다양한 유형의 값을 가질 수 있습니다.

변수 이름은 문자, 숫자, 밑줄 문자로 구성될 수 있습니다. 문자나 밑줄로 시작해야 합니다. 

Lua는 대소문자를 구분하므로 대문자와 소문자는 구별됩니다. 

Lua에는 8가지 기본 유형의 값이 있습니다.

Lua에는 변수 데이터 유형이 없지만 변수 범위에 따라 세 가지 유형이 있습니다.

 

변수의 3가지 유형

■ 전역변수: 명시적으로 지정하지 않는 한 모든 변수는 전역으로 간주됩니다. 
■ 로컬변수: 유형이 변수에 대해 로컬로 지정되면 그 범위는 범위 내의 기능으로 제한됩니다.
■ 테이블 필드: 함수와 0을 제외한 모든 것을 담을 수 있는 특별한 유형의 변수입니다

 

local d , f = 5 ,10     --declaration of d and f as local variables. 
d , f = 5, 10;          --declaration of d and f as global variables. 

자료형 8가지 유형

  1. nil  : 아무것도 아닌 텅빈 값을 의미함. (일반적으로 변수를 초기화 할 때 사용)
    C/C++ 에서의 null과는 다르다 . C/C++에서 null은 정수 0을 의미하지만, Lua에서는 말그대로 아무것도 아닌 것 
  2. boolean : false 와 true 두 값을 가진다.
    Lua에서는 boolean 타입 값 뿐만 아니라 다른 값으로도 참, 거짓을 나타낼 수 있다.
    조건문에서 nil 값도 false로 판별하고, 그 외의 모든 값은 true로 판별한다.
    0과 빈 문자열도 true로 판별하니 주의하자
  3. number : 0 , 3.141592 등과 같은 사직연산이 가능한 모든 숫자값을 의미 (기본적으로 64비트)
    Lua는 정수와 실수를 구분하지 않는다.
  4. string : 말그대로 문자열이다. Lua의 기본타입이며 , 스크립트상에서는 " 으로 둘러싸 지정하게 된다.
    예로  "1234" , "HelloWorld"  
    루아에서는 문자열을 수정할 수 없다.
  5. function : Lua에서는 함수도 하나의 값으로 취급한다. 즉 fuction으로 선언되면 실행되지만 , fucntion 타입의 변수에 대입도 가능하다.(table과 같이하여 사용하면 매우 유용함)
    즉 . 함수를 변수에 저장 , 다른 함수의 인자로 넘겨주기 , 함수를 return 받기 등이 가능하다.
  6. userdata : C/C++ 과의 교류를 위해 존재하는 타입이다. page내에서는 핸들이라고 지정하는 것들이 바로 이 타입이다. 스크립트를 작성할때 직접 값을 제어할 경우는 드물고, 보통 엔진에서 제공되는 함수를 통해 설정하거나 변경 해제하게된다. 
     userdata에는 두 종류가 있는데, full userdata Lua 에서 관리하는 메모리 블럭을 가진 객체이고, light userdata는 그냥 C 포인터 값이다. 
  7. thread : 독립적인 실행 스레드를 나타내며 코루틴을 구현하는데 쓴다. Lua 스레드는 운영체제 스레드와는 무관하다.
     Lua 는 자체 스레드를 지원하지 않는 경우를 포함하여 모든 시스템에서 코루틴을 지원함.
  8. table : 테이블은 Lua에서 유일한 데이터 구조화 장치다. 테이블을 이용해 평범한 배열이나 리스트, 심볼 테이블, 집합, 레코드, 그래프, 트리 등을 표현할 수 있다.  Lua 에서 레코드를 표현할 때는 필드 이름을 인덱스로 사용한다

 

Lvalues and Rvalues in Lua

Lvalue : 메모리 위치를 참조하는 표현식을 Lvalue라고 한다.

Rvalue :메모리의 일부 주소에 저장되어 있는 데이터 값을 rvalue라고한다.

 

g = 20

여기서 Lvalue 는 g 이고  Rvalue 는 20 이다.

g,l = 20,30

Lua 프로그래밍 언어에서는 위의 할당 유형과는 별도로 동일한 단일 명령문에 여러 개의 lvalue와 rvalue를 가질 수 있습니다. g에 20이 할당되고 l에 30이 할당됩니다.

10 = 20

위 명령문은 빌드타임 오류가 발생한다.(rvalue를 lvalue로 사용한 경우)

g = l

위 명령문은 잘 작동한다.( lvalue 를 rvalue 로 사용한 경우)

 

 

 

참조링크

https://deface.tistory.com/18

https://wariua.github.io/lua-manual/5.4/manual.html

'개발공부 > LUA' 카테고리의 다른 글

6.Lua 의 조건문  (0) 2024.01.29
4.Lua의 반복문  (0) 2024.01.29
3.Lua 의 연산자  (0) 2024.01.29
1.LUA 의 기본 구문  (1) 2024.01.29
[루아 스크립트] LUA 란?  (0) 2024.01.29