91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

碌曲县| 洪湖市| 海晏县| 腾冲县| 肥西县| 林口县| 黄陵县| 汝州市| 乌兰浩特市| 东台市| 望都县| 德保县| 龙江县| 慈利县| 武强县| 武夷山市| 金秀| 呼玛县| 遂川县| 仙桃市| 资中县| 荃湾区| 法库县| 湘潭县| 寻乌县| 赣榆县| 浮梁县| 安溪县| 响水县| 青浦区| 长泰县| 大城县| 玛曲县| 金溪县| 高淳县| 宁陕县| 武胜县| 浦县| 方山县| 延长县| 肇东市|