아마도 언어를 배움에 있어, 제일 먼저 알아야 하는 것은 그 언어가 지원하는 타입을 먼저 알아야 할 것이다. 조사, 동사, 명사.. 처럼은 아니구나... 컴퓨터 언어로 국한 될 듯 싶다. : )

C와 다르게 루아는 동적 타입 지정 언어이다. PHP와 비교한다면 변수의 선언 없이 그냥 쓰면 되는 점이 똑같다. 쉽게 풀어 보면, "타입 자체에는 의미를 두지마, 변수 자체에 의미를 두라구! 변수가 있기에 타입이 있는 거라구!"  란 개념으로 정리가 된다.

그래도 타입이 어떤게있는지 정도는 알아야 한다.^^; 왜냐하면 컴퓨터 언어에서는 최소한 숫자형과 문자형은 구분짓기 때문이다. : )

루아에는 총 8가지의 타입이 있다.
  • nil : 닐 타입 C언어의 NULL 과 비슷하다. DB의  null 과 비슷하다.
  • number : 수치 타입
  • string : 문자 타입
  • userdata : 사용자 데이터 타입
  • function : 함수 타입
  • thread : 스레드 타입
  • table : .. 동적 배열 타입 과 비슷한 개념이다.

하지만 이런 타입이 있다고 해서 타입을 지정해 줘서 "선언" 해 주는게 아니라, 적당한 시기에 적당한 변수가 필요하다면, 적당한 변수 이름에 적당한 값을 넣으면 적당한 값에 대한 적당한 타입이 된다. : )

기억해야 될 사항

0. 타입은 변하기 때문에, 모두 변수로 봐야 한다.
1. "문자열 타입을 담고 있는 변수"에 "숫자형 변수"를 "이용한 연산"은 안된다.
2. nil 타입에 비교연산만 허용 된다.
3. 변수에 아무 값도 없다면 nil 타입이다.
4. 수치 타입은 모두 double 타입이다.
5. 동적 타입이라, 변수의 타입이 대입되는 값에 의해 변경 된다.
6. 테이블 타입은 키로써 원소를 찾는 개념이다.
7. 테이블의 인덱스는 변수이며, 값은 변수가 나온다.
8. 없는 인덱스의 값은 nil 변수 이다.

로 기억 된다.

나머지는 사용하면서 알아가도 무난한 것들 이다.

타입이 변수에 의존하는 언어의 최대 단점은 "타입을 이용한 것들을 할 수 없다는 점" 이며. 최대 장점은 "변수를 최대한 이용 할 수 있다는 점" 이다. C에선 타입을 지정해주고 그 타입이 변하면 관련된 모든 타입을 변경해야 하지만, 루아에선 필요 없다.

C에선 타입의 이용을 컴파일 타임 에러 잡기나, 빠른 메모리 할당 등을 들 수 있고
루아에서 타입의 이용이란 자유로운 상태 변환을 들 수 있을 수 있을것 같다.


관련링크

http://www.lua.org/pil/2.html

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기