歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Lua中的string類型

在lua中用union TString來表示字符串類型

lobject.h:

其中結構體tsv中 reserved字段表示字符串是不是保留關鍵字,hash是其哈希值,len是其長度。我們在TString中沒有看到lua將字符串的內容存在任何地方啊,其實lua是將內容同一存在了另一個地方,global_state中的strt裡面:

lstate.h:

 

lstate.h:

其中字段hash為二維數組,這裡面保存了lua中所有的字符串。接下來讓我們來看看lua是怎樣生成一個字符串的吧:

lstring.h:

lua利用luaS_new來new一個string,而真正new string的是在函數luaS_newlstr中:

lstring.c:

首先計算出字符串的hash值,然後代碼G(L)->strt.hash[lmod(h, G(L)->strt.size)]找出hash的對應位置,這個哈希表是鏈表實現的,因此在for循環中查找鏈表,當鏈表中已經存在對應的字符串時做一些判斷然後返回這個已經存在的字符串指針TString *,若不存在則使用newlstr來new一個字符串並將其加到global_state中的strt中。

lstring.c:

Lua 語言 15 分鐘快速入門 http://www.linuxidc.com/Linux/2013-06/86582.htm

Lua程序設計(第2版)中文 PDF http://www.linuxidc.com/Linux/2013-03/81833.htm

Lua程序設計(第二版)閱讀筆記 http://www.linuxidc.com/Linux/2013-03/81834.htm

NetBSD 將支持用 Lua 腳本開發內核組件 http://www.linuxidc.com/Linux/2013-02/79527.htm

CentOS 編譯安裝 Lua LuaSocket http://www.linuxidc.com/Linux/2011-08/41105.htm

Lua 的詳細介紹:請點這裡
Lua 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved