問題始於:
-------------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...