lua中,萬物化table,table生萬物,哈哈哈哈,好像很厲害。
問題的由來:
之前想寫一個(gè)table排序,按順序處理排序后的table,然后輸出結(jié)果。然后遇到了一些了不得問題。找了半天原因發(fā)現(xiàn)是自己腦子不太好,決定婊一婊自己。
table的存放
table的存放其實(shí)和定義有關(guān)系
【系統(tǒng)指定key定義】
local tb = {1, 3, ad, 34}
此時(shí),tb中的值的key都是數(shù)字,而且是連續(xù)的key,遍歷table可以發(fā)現(xiàn)實(shí)際存放是順次的。就相當(dāng)于數(shù)組了。

【自指定key定義】
------如果我要定義一個(gè)table,他的key是不連續(xù)的,但是key又是可以按照大小排序的,此時(shí)定義table后,它實(shí)際存放的結(jié)果會(huì)不會(huì)是按照key的大小依次存放的呢?

------不會(huì),你死了這條心吧


table中,如果key值是不連續(xù)的,而且key的利用率不足50%(數(shù)量/最大key值),此時(shí),存放是使用的Hash算法。
所以,定義順序 != 存放的順序
table 常用function
【table.contact】將table元素連接為字符串
使用很簡單的呀:
table.concat( tablename, ", ", start_index, end_index )
然后:

多系喲,所以發(fā)現(xiàn)了嗎???
當(dāng)key不是連續(xù)的時(shí)候,這個(gè)蠢笨的table.concat 遇到第一個(gè)不連續(xù)的key就不繼續(xù)連接了
笨死了?。。?/p>
然后蠢笨的我:

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

【table.sort】
table.sort( tablename, sortfunction )
sortfunction是第二排序算法,不填寫時(shí),默認(rèn)的是對(duì)tablename內(nèi)的元素進(jìn)行升序排序。
終于寫到我要婊自己的地方了,我定義了一個(gè)key不連續(xù)的table,然后想對(duì)table內(nèi)的元素進(jìn)行排序,結(jié)果:

不說了,說多了都是淚。。
在對(duì)table進(jìn)行排序時(shí),需要對(duì)table進(jìn)行預(yù)處理。如果是要排序table的key,就要把table的key取出來,存放到新table中,對(duì)新table進(jìn)行排序。


總之,table不是數(shù)組,不能簡單的當(dāng)做數(shù)組來用
