Latest web development tutorials

루아 데이터 유형

루아는 동적 타입 언어, 변수, 타입 정의는 필요 변수에 값을 할당하지 않는 것입니다. 값은 변수에 저장된 매개 변수로 전달하거나 결과를 반환 할 수 있습니다.

전무, 부울, 숫자, 문자열, 유저 데이터, 기능, 스레드 및 테이블 : 루아는 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 ++ 언어의 라이브러리를 나타낸다 통화 변수입니다.