루아 데이터 유형
루아는 동적 타입 언어, 변수, 타입 정의는 필요 변수에 값을 할당하지 않는 것입니다. 값은 변수에 저장된 매개 변수로 전달하거나 결과를 반환 할 수 있습니다.
전무, 부울, 숫자, 문자열, 유저 데이터, 기능, 스레드 및 테이블 : 루아는 8 가지 기본 유형이 있습니다.
데이터 유형 | 기술 |
---|---|
무 | 이 클래스 (조건식 거짓에 해당) 유효하지 않은 값을 표현하는 가장 간단한 만 값이 속한 전무. |
부울 | 거짓과 진실 : 두 개의 값이 포함되어 있습니다. |
수 | 이것은 배정도 부동 소수점 실제의 종류를 나타낸다 |
현 | 이중 또는 작은 따옴표 한 쌍의 문자열 표현하기 |
기능 | 또는 C 함수 루아 작성된 |
유저 데이터 | C는 변수에 저장된 데이터 구조를 나타낸다 |
실 | 즉, 협력 프로그램의 이행을위한 별도의 라인의 구현 |
테이블 | 루아 테이블 (표) 실제로 "연관 배열"(연관 배열), 배열의 인덱스가 숫자 나 문자열이 될 수있다. 루아에서 테이블은 빈 테이블을 만드는 데 사용되는 {} 간단한 식 구조를 완료하려면 "식 구조"에 의해 생성된다. |
우리는 주어진 값 또는 변수의 타입을 테스트하기 위해 입력 기능을 사용할 수있다 :
print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> function print(type(true)) --> boolean print(type(nil)) --> nil print(type(type(X))) --> string
무기 호 (비어 있음)
:이 출력 전무 값을 것입니다, 전무, 같은하지 않습니다 변수 할당을 인쇄 등 - 전무는 하나의 값, 모든 유형의 유효한 값을 나타냅니다 없습니다
> print(type(a)) nil >
전역 변수와 테이블, 전무하고 "삭제"행동하는 전무 값이 할당 전역 변수 테이블이나 테이블 변수에, 그들을 삭제 동등한를 들어, 알고 다음 코드를 실행합니다 :
tab1 = { key1 = "val1", key2 = "val2", "val3" } for k, v in pairs(tab1) do print(k .. " - " .. v) end tab1.key1 = nil for k, v in pairs(tab1) do print(k .. " - " .. v) end
부울 (부울)
(false)를 참 (진실)과 거짓, 루아, "거짓"다른 "true"로 거짓과 전무에 : 부울 유형은 두 가지 값이 있습니다 :
print(type(true)) print(type(false)) print(type(nil)) if false or nil then print("至少有一个是 true") else print("false 和 nil 都为 false!") end
다음과 같이 위의 코드가 실행된다 :
$ lua test.lua boolean boolean nil false 和 nil 都为 false!
수 (디지털)
루아 기본값은 단 하나의 숫자 유형 - 더블 (double 정밀도), 다음과 같은 문구가 숫자 유형으로 볼 수있다 (기본 유형이 luaconf.h 정의에 수정 될 수 있습니다) 입력 :
print(type(2)) print(type(2.2)) print(type(0.2)) print(type(2e+1)) print(type(0.2e-1)) print(type(7.8263692594256e-06))
위의 코드의 결과 :
number number number number number number
문자열 (문자열)
이중 또는 작은 따옴표 한 쌍의 문자열을 나타냅니다.
string1 = "this is string1" string2 = 'this is string2'
또한 "[[]]" "한"문자열을 의미하는 두 개의 브라켓을 사용할 수 있습니다.
html = [[ <html> <head></head> <body> <a href="http://www.w3cschool.cc/">w3cschool本教程</a> </body> </html> ]] print(html)
다음 코드 실행 결과 :
<html> <head></head> <body> <a href="http://www.w3cschool.cc/">w3cschool本教程</a> </body> </html>
숫자 문자열 연산 작업을 수행 할 때, 루아는 숫자의 문자열로 그 번호를 설정하려고합니다 :
> print("2" + 6) 8.0 > print("2" + "6") 8.0 > print("2 + 6") 2 + 6 > print("-2e2" * "6") -1200.0 > print("error" + 1) stdin:1: attempt to perform arithmetic on a string value stack traceback: stdin:1: in main chunk [C]: in ? >
위의 코드 "오류"+ 1 실행 오류, ..., 등의 사용 문자열 연결 :
> print("a" .. 'b') ab > print(157 .. 428) 157428 >
예 다음 문자열, 전면에있는 문자열의 길이를 계산하는 #을 사용하여
> len = "www.w3cschool.cc" > print(#len) 16 > print(#"www.w3cschool.cc") 16 >
테이블 (표)
루아에서 테이블은 빈 테이블을 만드는 데 사용되는 {} 간단한 식 구조를 완료하려면 "식 구조"에 의해 생성된다. 또한 테이블, 직접 초기화 테이블에 일부 데이터를 추가 할 수 있습니다 :
-- 创建一个空的 table local tbl1 = {} -- 直接初始表 local tbl2 = {"apple", "pear", "orange", "grape"}
루아 테이블 (표) 실제로 "연관 배열"(연관 배열), 배열의 인덱스가 숫자 나 문자열이 될 수있다.
-- table_test.lua 脚本文件 a = {} a["key"] = "value" key = 10 a[key] = 22 a[key] = a[key] + 11 for k, v in pairs(a) do print(k .. " : " .. v) end
스크립트 실행 결과 :
$ lua table_test.lua key : value 10 : 33
초기 인덱스 0, 일반적으로 루아에있는 테이블의 디폴트의 초기 인덱스 1의 배열과 같은 배열의 다른 언어와는 달리.
-- table_test2.lua 脚本文件 local tbl = {"apple", "pear", "orange", "grape"} for key, val in pairs(tbl) do print("Key", key) end
스크립트 실행 결과 :
$ lua table_test2.lua Key 1 Key 2 Key 3 Key 4
테이블 크기가 새로운 데이터를 추가 할 수있는 테이블의 길이를 자동 증가가 있고, 길이는 고정되지 않고, 원래의 테이블은 전무 아니다.
-- table_test3.lua 脚本文件 a3 = {} for i = 1, 10 do a3[i] = i end a3["key"] = "val" print(a3["key"]) print(a3["none"])
스크립트 실행 결과 :
$ lua table_test3.lua val nil
함수 (기능)
루아에서 함수가 변수 함수가있을 수 있습니다, "최고 수준의 값 (일류 값)"로 간주됩니다
-- function_test.lua 脚本文件 function factorial1(n) if n == 0 then return 1 else return n * factorial1(n - 1) end end print(factorial1(5)) factorial2 = factorial1 print(factorial2(5))
스크립트 실행 결과 :
$ lua function_test.lua 120 120
함수는 매개 변수 전달의 방법으로 익명 함수 (익명 함수를) 할 수있다 :
-- function_test2.lua 脚本文件 function anonymous(tab, fun) for k, v in pairs(tab) do print(fun(k, v)) end end tab = { key1 = "val1", key2 = "val2" } anonymous(tab, function(key, val) return key .. " = " .. val end)
스크립트 실행 결과 :
$ lua function_test2.lua key1 = val1 key2 = val2
스레드 (스레드)
루아에서 주 스레드는 협력 프로그램 (코 루틴)입니다. 그것은 거의 전역 변수와 다른 협력 프로그램과 다른 물건의 대부분을 공유 할 수 있습니다 자신의 독립적 인 스택 지역 변수와 명령 포인터가 스레드 (스레드)와 함께합니다.
코 루틴와 스레드의 차이 : 여러 스레드를 동시에 실행할 수 있으며 코 루틴은 언제든지 하나를 실행 할 수 있으며, 일시 중지 된 경우에만 실행중인 코 루틴은 중지 (일시 중지).
유저 데이터 (사용자 정의 타입)
유저 데이터는 어플리케이션에 의해 사용되는 사용자 정의 데이터 형 루아에 저장된 데이터 유형의 C / C ++ 데이터 (일반적으로 구조체와 포인터) 일 수 생성 또는 C / C ++ 언어의 라이브러리를 나타낸다 통화 변수입니다.