回覆列表
  • 1 # 無法自拔愛的

    一般來說是獲得一個table的長度(即元素數),但這個運算子實際上陷阱很多

    #的實際作用是獲得一個table中最大的數字鍵值,比如:

    t = {"a", "b", "c", "d"}

    #t --輸出是4

    而tags[#tags+1]=tag就是一個常見的用法,在tags這個table的末端插入一個新元素tag

    但由於上面說的,#僅對鍵值連續的數值鍵值有效,因此

    1、當鍵值為字串等其他型別時,該運算子返回的值無法確認,比如

    t = { x = "a", y = "b", z = "c"}

    #t --輸出是0

    2、當鍵值為數值但不連續時,比如:

    t = {"a", "b", "c"}

    #t -- 同第一個範例,此時正常為3

    t[5] = "e"

    #t --此時輸出依然為3,因為t[4]為nil,計數到3處停止。

    綜上,如果你的table是純粹當一個連續的陣列在用,那麼#t是很方便的獲得table長度的方法;但如果你的table中key的數值不連續,或者有其他型別的key那麼還是不要指望#能給出多有意義的結果來。

  • 中秋節和大豐收的關聯?
  • 產後抑鬱怎麼辦?