lua ——table的無言以對

lua中,萬物化table,table生萬物,哈哈哈哈,好像很厲害。

問題的由來:

之前想寫一個table排序,按順序處理排序后的table,然后輸出結果。然后遇到了一些了不得問題。找了半天原因發現是自己腦子不太好,決定婊一婊自己。

table的存放

table的存放其實和定義有關系

【系統指定key定義】

local tb = {1, 3, ad, 34}

此時,tb中的值的key都是數字,而且是連續的key,遍歷table可以發現實際存放是順次的。就相當于數組了。

【自指定key定義】

------如果我要定義一個table,他的key是不連續的,但是key又是可以按照大小排序的,此時定義table后,它實際存放的結果會不會是按照key的大小依次存放的呢?

------不會,你死了這條心吧


table中,如果key值是不連續的,而且key的利用率不足50%(數量/最大key值),此時,存放是使用的Hash算法。

所以,定義順序 != 存放的順序


table 常用function

【table.contact】將table元素連接為字符串

使用很簡單的呀:

table.concat( tablename, ", ", start_index, end_index )

然后:

多系喲,所以發現了嗎???

當key不是連續的時候,這個蠢笨的table.concat 遇到第一個不連續的key就不繼續連接了

笨死了!!!

然后蠢笨的我:

table為嵌套的時候,將table中的所有元素連接起來,用到了書上說的遞歸:

【table.sort】

table.sort( tablename, sortfunction )

sortfunction是第二排序算法,不填寫時,默認的是對tablename內的元素進行升序排序。

終于寫到我要婊自己的地方了,我定義了一個key不連續的table,然后想對table內的元素進行排序,結果:

不說了,說多了都是淚。。

在對table進行排序時,需要對table進行預處理。如果是要排序table的key,就要把table的key取出來,存放到新table中,對新table進行排序。

總之,table不是數組,不能簡單的當做數組來用


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • 一、基本數據類型 注釋 單行注釋:// 區域注釋:/* */ 文檔注釋:/** */ 數值 對于byte類型而言...
    龍貓小爺閱讀 4,288評論 0 16
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,516評論 0 3
  • 當我在工作中使用lua進行開發時,發現在lua中有4種方式遍歷一個table,當然,從本質上來說其實都一樣,只是形...
    Lee堅武閱讀 2,602評論 0 51
  • 對酒當歌 人生幾何 眾人皆醉 且自獨酌
    春衫涼閱讀 354評論 22 21