Lua學習中遇到的問題 「 」的含義

2021-10-04 01:52:27 字數 2241 閱讀 7811

問題始於:

-------------test--1------start

local t = {}

t["1"] = 2

t["2"] = 2

t["3"] = 2

t["4"] = 2

print(#t) ------ 0

-------------test--2------start

t = {}

t[1] = 2

t[2] = 2

t[3] = 2

t[4] = 2

print(#t) ------ 4

-------------test--3------start

t = {}

t[0] = 2

t[1] = 2

t[2] = 2

t[3] = 2

print(#t) ------ 3

-------------test--4------start

t = {}

t[2] = 2

t[3] = 2

t[4] = 2

t[5] = 2

print(#t) ------ 5

-------------test--5------start

t = {}

t[3] = 2

t[4] = 2

t[5] = 2

t[6] = 2

print(#t) ------ 0

-------------test--5------end

-------------test--6------start

t = {}

t[3] = 2

t[4] = 2

t[5] = 2

t[6] = 2

table.insert( t, 1)

print(#t,t[1],t[2]) ------ 6 1 nil

-------------test--7------start

t = {}

t[4] = 2

t[5] = 2

t[6] = 2

table.insert( t, 1)

print(#t,t[1],t[2],t[3]) ------ 1 1 nil nil

在第乙個中我向列表初始化了4個值,但是key值都是string,得到的#t是0,說明『#』不對string計數

第二個我使用從1開始的連續數值,得到的#t為4,說明#對number計數

第三個我使用從0開始的連續數值,得到的#t為3,說明#對number為1開始計數

第四個我使用從2開始到5的連續數值,得到的#t為5,說明#不一定從1開始計數?(帶著這個疑問看下乙個)

第五個我使用從3開始到6的連續數值,得到的#t為0,到了這裡我似乎明白了一點,不知道你們懂了沒有。

第六個我使用上乙個表執行了一次插入操作,得到的#t為6,t[1]為插入值,t[2]為nil,t[3]~t[6]都是有值的只有t[2]沒有值

第七個我使用 4~6的列表 執行了一次插入,得到的#t為1,

t[2],t[3]均為空值

後面我在使用過程中又奇妙的發現了乙個問題table.insert()操作帶來的問題,等到後續再講

在看看下面更加有意思的,突然發現 沒那麼簡單~

-------------test--8------start

t = {}

t[2] = 2

t[4] = 2

t[5] = 2

t[6] = 2

t[7] = 2

print(#t) ------ 7

-------------test--9------start

t = {}

t[2] = 2

t[3] = 2

t[5] = 2

t[6] = 2

t[7] = 2

print(#t) ------ 3

[寫到這裡我也懵逼了,等到後續知道原因的時候 我再回來補吧]

–emmmmm 再來補一下 #號鍵只針對於從1開始的正向連續的鍵值計數,為什麼上面的計數回事那個樣子呢??,感覺跟位址有關係,,總之這個坑點記住咯! 等以後看看原始碼在回來補。。。。後續再補

關於lua學習中遇到的一些個小問題

1.lua中table的鍵名呼叫 從下圖可以看出table不新增鍵名時預設是從1開始依次往下進行編號的且用pairs輸出時,會按在tabel中位置生成的順序輸出 排序只與預設順序有關,與值無關 但其他在table中的以鍵名 值的形式存在,在用pairs輸出時就可能不會按照在table中的排序進行輸出...

學習中遇到的問題

頂層const和底層const的概念與區別。vector的sort演算法究竟有沒有使用std swap或者自定義型別自己的swap?類中static成員在 初始化?函式的預設引數是引用,用右值初始化時,為什麼必須是const型別?void resize size t n,std string s s...

C 學習中遇到的問題

在c 學習中遇到的問題集中在此,若有高人看見希望給出解決辦法,在日後的學習中本人若找到解決辦法,也在此更新!1 如何實現ipconfig all命令的全部功能 region 另類解法 程式如下 system.diagnostics.process p new system.diagnostics.p...