기술나눔

Lua 시작하기(2) - 데이터 유형

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

머리말

이 기사는 다음에서 참조되었습니다.Lua 데이터 유형 | 초보자 튜토리얼(runoob.com)

더 자세히 알고 싶으신 분들은 위의 링크를 확인해주세요:

여덟 가지 기본 유형

type - 데이터 유형을 보는 함수:

테스트 프로그램:

  1. print(type("Hello world")) --> string
  2. print(type(10.4*3)) --> number
  3. print(type(print)) --> function
  4. print(type(type)) --> function
  5. print(type(true)) --> boolean
  6. print(type(nil)) --> nil
  7. print(type(type(X))) --> string
  8. print(type(Y)) -->nil
  9. print(type('Y')) -->string

효과 시연

여기서 출력하는 유형(Y)이 nil 유형임을 알 수 있습니다. 이유는 무엇입니까? 다음 nil(비어 있음)이 표시됩니다.

없음 (비어 있음)

nil 유형은 유효한 값이 없는 유형을 나타냅니다. 예를 들어 할당 없이 변수를 인쇄하면 nil 값이 출력됩니다.

초기화되지 않은 변수 유형 - nil

다음과 같습니다. 초기값이 할당되지 않은 세 변수의 출력 유형은 모두 nil입니다.

nil은 테이블의 키-값 쌍을 삭제합니다.

테스트 프로그램

  1. tab1 = { key1 = "val1", key2 = "val2",
  2. "val3","val4",key3 = "val5" }
  3. for k, v in pairs(tab1) do
  4. print(k .. " - " .. v)
  5. end
  6. print("=========直接输出=============")
  7. tab1.key1 = nil
  8. for k, v in pairs(tab1) do
  9. print(k .. " - " .. v)
  10. end
  11. print("============删除key1后==========")
  12. tab1.key3 = nil
  13. for k,v in pairs(tab1) do
  14. print(k.. " - "..v)
  15. end
  16. print("=========删除key3后============")

작업 결과

전역 변수 및 테이블의 경우 nil에는 "삭제" 효과도 있습니다. 테이블의 전역 변수 또는 변수에 nil 값을 할당하는 것은 이를 삭제하는 것과 같습니다.

nil은 큰따옴표로 비교해야 합니다. "

type(X)==nil 결과는 다음과 같습니다.거짓그 이유는 type(X)가 본질적으로 문자열 유형인 반환된 "nil" 문자열이기 때문입니다.

부울

부울 유형에는 true(true)와 false(false)라는 두 가지 선택적 값만 있습니다. Lua는 false와 nil을 false로 처리하고 숫자 0도 true입니다.

테스트 프로그램

  1. print(type(true))
  2. print(type(false))
  3. print(type(nil))
  4. if false or nil then
  5. print("至少有一个是 true")
  6. else
  7. print("false 和 nil 都为 false")
  8. end
  9. if 0 then
  10. print("数字 0 是 true")
  11. else
  12. print("数字 0 为 false")
  13. end

효과 시연

숫자


루아에는 기본적으로 하나의 숫자 유형만 있습니다 - 배정밀도(이중 정밀도) 유형(기본 유형은 luaconf.h에서 수정 가능), 다음 쓰기 방법은 num으로 간주됩니다.

문자열(문자열)

"" '' -- 문자열을 나타냅니다.


[[ ]] -- 문자열을 나타냅니다.
 

숫자를 문자열로 강제 변환할 수 있음

숫자 문자열에 대해 산술 연산을 수행할 때 Lua는 숫자 문자열을 숫자로 변환하려고 시도합니다.

..를 사용하여 문자열을 연결합니다.

 

테이블

Lua에서 테이블 생성은 "구성적 표현식"을 통해 수행됩니다. 가장 간단하게 생성된 표현식은 빈 테이블을 생성하는 데 사용되는 {}입니다. 테이블에 일부 데이터를 추가하고 테이블을 직접 초기화할 수도 있습니다.

초기화 테이블

인덱스(키)를 기준으로 테이블 수정

Lua의 테이블은 실제로"연관 배열"(연관 배열), 배열의 인덱스는 숫자 또는 문자열일 수 있습니다.

Lua의 인덱스는 1부터 시작합니다.

테이블의 길이는 고정되어 있지 않습니다. 새 데이터가 추가되면 초기화되지 않은 테이블의 길이는 자동으로 늘어납니다.

기능

Lua에서 함수는 "일급 값"으로 간주됩니다.

함수는 변수에 저장될 수 있습니다:

매개변수를 전달하는 람다 표현식(익명 함수)



Lua에서 가장 중요한 스레드는 코루틴입니다. 이는 스레드와 유사하며 자체 독립 스택, 지역 변수 및 명령어 포인터를 가지고 있습니다.
전역 변수 및 기타 대부분의 항목은 다른 코루틴과 공유할 수 있습니다.

스레드와 코루틴의 차이점: 스레드는 동시에 여러 번 실행될 수 있지만 코루틴은 한 번에 하나만 실행할 수 있으며 실행 중인 코루틴은 일시 중지된 경우에만 일시 중지됩니다.

사용자 데이터(사용자 정의 유형)


userdata는 애플리케이션이나 C/C++ 언어 라이브러리에서 생성된 유형을 나타내는 데 사용되는 사용자 정의 데이터 유형입니다.
모든 C/C++ 데이터 유형(일반적으로 구조체 및 포인터)의 모든 데이터를 Lua 변수에 저장하고 호출할 수 있습니다.