中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lua之table(表)

發布時間:2020-08-01 00:53:09 來源:網絡 閱讀:956 作者:liam2199 欄目:開發技術

Lua table(表)

使用表來統一表示Lua中的一切數據,是Lua區分于其他語言的一個特色。這個特色從最開始的Lua版本保持至今,很大的原因是為了在設計上保持簡潔。Lua表分為數組和散列表部分,其中數組部分不像其他語言那樣,從0開始作為第一個索引,而是從1開始。散列表部分可以存儲任何其他不能存放在數組部分的數據,唯一的要求就是鍵值不能為nil。盡管內部實現上區分了這兩個部分,但是對使用者而言卻是透明的。使用Lua表,可以模擬出其他各種數據結構——數組、鏈表、樹等。

雖然設計上簡潔,并且對使用者更加透明、友好,但是如果使用不當,還會造成效率性能上的差異。

table 是 Lua 的一種數據結構用來幫助我們創建不同的數據類型,如:數字、字典等。

Lua table 使用關聯型數組,你可以用任意類型的值來作數組的索引,但這個值不能是 nil。

Lua table 是不固定大小的,你可以根據自己需要進行擴容。

Lua也是通過table來解決模塊(module)、包(package)和對象(Object)的。 例如string.format表示使用"format"來索引table string。

構造器是創建和初始化表的表達式。表是Lua特有的功能強大的東西。最簡單的構造函數是{},用來創建一個空表。可以直接初始化數組:

======================================================

序號方法 & 用途
1table.concat (table [, sep [, start [, end]]]):

concat是concatenate(連鎖, 連接)的縮寫. table.concat()函數列出參數中指定table的數組部分從start位置到end位置的所有元素, 元素間以指定的分隔符(sep)隔開。

2table.insert (table, [pos,] value):

在table的數組部分指定位置(pos)插入值為value的一個元素. pos參數可選, 默認為數組部分末尾.

3table.maxn (table)

指定table中所有正數key值中最大的key值. 如果不存在key值為正數的元素, 則返回0。(Lua5.2之后該方法已經不存在了,本文使用了自定義函數實現)

4table.remove (table [, pos])

返回table數組部分位于pos位置的元素. 其后的元素會被前移. pos參數可選, 默認為table長度, 即從最后一個元素刪起。

5table.sort (table [, comp])

對給定的table進行升序排序。

table.concat()函數列出參數中指定table的數組部分從start位置到end位置的所有元素, 元素間以指定的分隔符(sep)隔開。

-- 簡單的table
mytable = {}
print("mytable 的類型是 : ", type(mytable))

mytable[1] = "Lua"
mytable["wow"] = "修改前"

print("mytable 索引為1 的元素是 : ", mytable[1])
print("mytable 索引為wow 的元素是 : ", mytable["wow"])

--alternatable和mytable的是指向同一個table
alternatable = mytable

print("alternatable 索引為1 的元素是 : ", alternatable[1])
print("alternatable 索引為wow 的元素是 : ", alternatable["wow"])

alternatable["wow"] = "修改后"

print("mytable 索引為wow 的元素是 : ", mytable["wow"])

-- 釋放變量
alternatable = nil
print("alternatable 是  ", alternatable)

-- mytable仍然可以訪問
print("mytable 索引為wow 的元素是 : ", mytable["wow"])

mytable = nil;

print("mytable 是 " , mytable);

運行結果:

Lua之table(表)

=========================================================================

table.insert (table, [pos,] value):在table的數組部分指定位置(pos)插入值為value的一個元素. pos參數可選, 默認為數組部分末尾.

table.remove (table [, pos])返回table數組部分位于pos位置的元素. 其后的元素會被前移. pos參數可選, 默認為table長度, 即從最后一個元素刪起。

fruits = {"banana","orange","apple"}

-- 在末尾插入
table.insert(fruits, "mango")
print("索引為4的元素為 : ", fruits[4]);

--在索引為2的鍵處插入
table.insert(fruits, 2, "grapes")
print("索引為2的元素為 : ", fruits[2])

print("最后一個元素為 : ", fruits[5])
table.remove(fruits)
print("移除后最后一個元素為  :",fruits[5])

運行結果:

Lua之table(表)

=======================================================================

function table_maxn(t)
	local mn = 0;
	for k,v in pairs(t)
	do
		if mn < k
		then
			mn = k;
		end
	end
	return mn;
end

tb1 = {[1] = "a",[2] = "b",[3] = "c",[26] = "z",}
print("tb1 長度 : ", #tb1)
print("tb1最大值 : ", table_maxn(tb1))

運行結果:

Lua之table(表)


后記:

Lua 元表(Metatable)

在 Lua table 中我們可以訪問對應的key來得到value值,但是卻無法對兩個 table 進行操作。

因此 Lua 提供了元表(Metatable),允許我們改變table的行為,每個行為關聯了對應的元方法。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊通| 慈溪市| 合肥市| 台山市| 桃源县| 林甸县| 通榆县| 大安市| 阳曲县| 修文县| 松阳县| 丰都县| 浮山县| 安仁县| 新竹市| 舒兰市| 屯昌县| 龙里县| 成安县| 东平县| 西华县| 瑞丽市| 成都市| 永福县| 灌阳县| 松溪县| 东台市| 友谊县| 五原县| 麻阳| 尚义县| 买车| 石河子市| 青河县| 来凤县| 灵璧县| 济南市| 江都市| 清水县| 天水市| 无棣县|