lua中的string型別

2022-07-06 17:21:11 字數 892 閱讀 1718

在lua中用union tstring來表示字串型別

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

其中欄位hash為二維陣列,這裡面儲存了lua中所有的字串。接下來讓我們來看看lua是怎樣生成乙個字串的吧:

lstring.h:

lua利用luas_new來new乙個string,而真正new string的是在函式luas_newlstr中:

首先計算出字串的hash值,然後**g(l)->strt.hash[lmod(h, g(l)->strt.size)]找出hash的對應位置,這個雜湊表是鍊錶實現的,因此在for迴圈中查詢鍊錶,當鍊表中已經存在對應的字串時做一些判斷然後返回這個已經存在的字串指標tstring *,若不存在則使用newlstr來new乙個字串並將其加到global_state中的strt中。

lua中的table型別

lua中的table型別確實很靈活,靈活到大家發揮想象力,隨意發揮 lua中的表太強大了 t t.a 111 t b 222 t 3 bbb t.t 定義乙個函式 function t.fun p io.write n這是第乙個函式!p endt.fun2 function a,b io.write...

XML中的String型別

xml中的string型別定義 string,字串。可以包含回車符,換行符,製表符.qname qualified name 有字首名稱型別。字首和區域性名稱必須都是ncname型別,中間用冒號連線.normalizedstring,規範化字串型別。string中回車符 換行符 製表符將被去掉 to...

Lua的string學習筆記

1.字元轉換成數字 使用tonumber 類似c裡面的atoi mystr 6 mynum tonumber mystr print mynum 2.數字轉換成字元竄 使用tostring 類似c裡面的itoa mynum 8 mystr tostring mynum print mystr pri...