国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua數據類型介紹

Lua數據類型介紹

2020-04-18 11:17Lua中文手冊 Lua

這篇文章主要介紹了Lua數據類型介紹,本文講解了Lua中的nil(空)、boolean(布爾)、number(數字)、string(字符串)、table(表)、function(函數)、thread(線程)、userdata(自定義類型)等數據類型,需要的朋友可以參考下

Lua 是一個功能強大、快速、輕量的可嵌入式腳本語言,由標準的 ANSI C 實現,由于擁有一組精簡的強大特性,以及容易使用的 C API,這使得它可以很容易嵌入或擴展到其他語言中使用,并且有個非官方認領的中文名 -- “擼啊”。

安裝 Lua

Lua 安裝很簡單,把源碼下載下來后,直接 make 就行:

 

復制代碼 代碼如下:

wget http://www.lua.org/ftp/lua-5.2.2.tar.gz
tar -zxvf lua-5.2.2.tar.gz
cd lua-5.2.2
make generic
make install
lua -e 'print("Hello World!")'

 

如果是 Mac 用戶,并且裝有 Homebrew 的話,一條指令就行:

 

復制代碼 代碼如下:

brew install lua

 

Lua 是動態(弱)類型的語言,它有一下幾種數據結構:

nil(空)

nil 類型表示一種沒有任何有效值,它只有一個值 -- nil,例如打印一個沒有賦值的變量,便會輸出一個 nil 值:

 

復制代碼 代碼如下:

print(type(a))

 

對于全局變量和 table,nil 還有一個“刪除”作用,給全局變量或者 table 表里的變量賦一個 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

 

boolean(布爾)

boolean 類型只有兩個可選值:true(真) 和 false(假),Lua 把 false 和 nil 看作是“假”,其他的都為“真”

 

復制代碼 代碼如下:

print(type(true))
print(type(false))
print(type(nil))
 
if type(false) or type(nil) then
    print("false and nil are false!")
else
    print("other is true!")
end

 

number(數字)

Lua 默認只有一種 number 類型 -- double(雙精度)類型(默認類型可以修改 luaconf.h 里的定義),以下幾種寫法都被看作是 number 類型:

 

復制代碼 代碼如下:

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))

 

string(字符串)

字符串由一對雙引號或單引號來表示

 

復制代碼 代碼如下:

string1 = "this is string1"
string2 = 'this is string2'

 

也可以用 2 個方括號 "[[]]" 來表示“一塊”字符串

 

復制代碼 代碼如下:

html = [[
<html>
<head></head>
<body>
    <a href="http://jb51.net/">just a link</a>
</body>
</html>
]]
print(html)

 

在對一個數字字符串上進行算術操作時,Lua 會嘗試將這個數字字符串轉成一個數字

 

復制代碼 代碼如下:

print("2" + 6)
print("2" + "6")
print("2 + 6")
print("-2e2" * "6")
print("error" + 1)


使用 .. 連接字符串

 

 

復制代碼 代碼如下:

print("a" .. 'b')
print(157 .. 428)

 

使用 # 作為長度操作符,放在字符串前面可以獲取該字符串的長度

 

復制代碼 代碼如下:

len = "length"
print(#len)
print(#"length")

 

table(表)

在 Lua 里,table 的創建是通過“構造表達式”來完成,最簡單構造表達式是{},用來創建一個空表。也可以在表里添加一些數據,直接初始化表:

 

復制代碼 代碼如下:

-- 創建一個空的 table
local tbl1 = {}
 
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}

 

Lua 中的表(table)其實是一個“關聯數組”(associative arrays),數組的索引可以是數字或者是字符串

 

復制代碼 代碼如下:

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

 

不同于其他語言的數組把 0 作為數組的初始索引,在 Lua 里表的默認初始索引一般以 1 開始

 

復制代碼 代碼如下:

local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
    print("Key", key)
end

 

table 的變量只是一個地址引用,對 table 的操作不會產生 table 的副本或創建新的 table

 

復制代碼 代碼如下:

a1 = {}
a1["key"] = "val1"
a2 = a1
print(a2["key"])
a2["key"] = "val2"
print(a1["key"])
print(a1.key)

 

table 不會固定長度大小,有新數據添加時 table 長度會自動增長,沒初始的 table 都是 nil

 

復制代碼 代碼如下:

a3 = {}
for i = 1, 10 do
    a3[i] = i
end
a3["key"] = "val"
print(a3["key"])
print(a3["none"])

 

function(函數)

在 Lua 中,函數是被看作是“第一類值(First-Class Value)”,函數可以存在變量里

 

復制代碼 代碼如下:

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))

 

function 可以以匿名函數(anonymous function)的方式通過參數傳遞

 

復制代碼 代碼如下:

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)

 

thread(線程)

在 Lua 里,最主要的線程是協同程序(coroutine)。它跟線程(thread)差不多,擁有自己獨立的棧、局部變量和指令指針,可以跟其他協同程序共享全局變量和其他大部分東西。

線程跟協程的區別:線程可以同時多個運行,而協程任意時刻只能運行一個,并且處于運行狀態的協程只有被掛起(suspend)時才會暫停。

userdata(自定義類型)

userdata 是一種用戶自定義數據,用于表示一種由應用程序或 C/C++ 語言庫所創建的類型,可以將任意 C/C++ 的任意數據類型的數據(通常是 struct 和 指針)存儲到 Lua 變量中調用。

延伸 · 閱讀

精彩推薦
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監控賦值、通過table給另一個table賦值等內容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua實現__add方法重載示例

    Lua實現__add方法重載示例

    這篇文章主要介紹了Lua實現__add方法重載示例,本文直接給出實現代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua教程(二):基礎知識、類型與值介紹

    Lua教程(二):基礎知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎知識、類型與值介紹,本文講解了Hello World程序、代碼規范、全局變量、類型與值等內容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua中table庫函數方法介紹

    Lua中table庫函數方法介紹

    這篇文章主要介紹了Lua中table庫函數方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua中計算、執行字符串中Lua代碼的方法

    Lua中計算、執行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執行字符串中Lua代碼的方法,類似JavaScript中eval函數的功能,在Lua中也可以實現,需要的朋友可以參考下 ...

    腳本之家6322020-04-30
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久久一区探花 | 国产成人精品免高潮在线观看 | 日日摸夜夜| 欧美影院| 久久综合久久久 | 午夜久久久久久久久久一区二区 | 男人的天堂在线免费视频 | 亚洲成人免费电影 | 欧美在线国产 | 天堂中文在线视频 | 欧美一区二区在线播放 | 国产真实乱全部视频 | 欧美.com| 中文字幕亚洲欧美日韩在线不卡 | 97精品超碰一区二区三区 | heyzo 在线 | 懂色中文一区二区在线播放 | 蜜桃传媒一区二区 | 高清在线一区 | 有码在线 | 免费精品 | 性色网 | 亚洲 欧美 精品 | 一区在线播放 | 欧美九九九 | 国产中文字幕在线观看 | 日韩欧美网 | 国产乱码精品一区二区三区忘忧草 | 国产精品日韩在线观看 | 中文字幕日韩欧美一区二区三区 | 性一区| 深夜免费网站 | 日本精品在线观看 | 久久亚洲欧美日韩精品专区 | 91在线免费观看 | 免费av片网站 | h在线免费| 欧美日韩成人一区 | 亚洲欧美精品 | 欧美色综合天天久久综合精品 | 亚洲国产aⅴ成人精品无吗 久久综合久久久 |