1、本地a = {}
2.流程a。
3.判斷A是否為空表。
關於A是否為空表的判斷,我發現有些代碼是這樣做的:
如果a == {}那麽
結果是a == {}總是返回false,這是壹個邏輯錯誤。因為這裏比較的是表a和壹個匿名表的內存地址。
還有壹些代碼可以做到這壹點:
如果table.maxn(a) == 0,則
這樣做是不安全的,除非表的鍵都是數字,沒有哈希部分。
真的要遍歷表,跳出return false才能確定是否為空嗎?至少代碼這麽寫太難看了。
在網上簡單搜索了壹下,發現原來官方手冊已經給出了答案,就是依靠lua內置的next函數。
即,如果next(a) == nil,則
Next實際上是pairs在遍歷表時用來記錄下壹個內容的函數。
最好將其封裝在項目的模塊中,以免在模塊中本地有下壹個函數。
所以封裝後判斷lua表是否為空的功能如下:
函數表_is_empty(t)
return _G.next( t ) ==零
結束