簡單認識Luahtml
百度了一下(偷哈懶就不本身寫了)數組
Lua 是一個小巧的腳本語言。是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)裏的一個研究小組,
由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發。 其設計目的是爲了嵌入應用程序中,
從而爲應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在全部操做系統和平臺上均可以編譯,運行。Lua並無提供強大的庫,
這是由它的定位決定的。因此Lua不適合做爲開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平臺上的即時編譯功能。
and | break | do | else | elseif | end | false |
for | function | if | in | local | nil | not |
or | repeat | return | then | true | until | while |
註釋:行註釋使用兩個連字符(--);多行註釋有兩種大同小異以」--[[「開始,以」--]]」結尾或者以」--[==[」開始以」 –]==]」結尾中間的等號能夠任意多個但先後要匹配。函數
全局變量:Lua中的全局變量比較特殊,不須要聲明直接使用便可,沒有給值獲得的久是nil值。刪除全局變量直接給他nil就刪除。測試
數據類型ui
Lua是一種動態類型的語言,沒有類型定義語法;也就是說一個Lua變量既能夠存儲數字類型的值也能夠存儲字符串類型的值或者其餘類型。但一般咱們不這樣幹,由於很容易混淆。Lua定義了8中基礎類型編碼
類型 | 名稱 | 類型 | 名稱 |
nil | 空 | boolean | 布爾 |
number | 數字 | string | 字符串 |
userdata | 自定義類型 | function | 函數 |
thread | 線程 | table | 表 |
Lua中獲取變量類型也比較簡單實用type函數便可。寫一段代碼測試先:lua
print(a) -- a的值爲nil print(type(tmp)) -- tmp的值爲nil但這裏不是打印它的值,而是值的類型 tmp = 3 -- 給tmp賦值整數3 print(type(tmp)) --> number tmp = 3.14 -- 給tmp賦值浮點數 print(type(tmp)) --> number tmp = print -- 將函數print賦值給tmp print(type(tmp)) --> function tmp = true print(type(tmp)) --> boolean tmp = nil -- 給全局變量nil值至關於刪除 print(type(tmp)) --> nil
上面代碼很簡單也有註釋很容易看懂就再也不解釋。spa
布爾類型:布爾類型主要用於分支結構中判斷真與假。Lua在條件測試時只有兩個值認爲是假:false和nil,其餘任何值都認爲是真包括數字零和空字符串。操作系統
數字類型:Lua中的數字類型來得至關簡潔沒有CSharp中的長短整型、單雙精度浮點數,就一個number實數類型。線程
字符串:Lua中的字符串是不可變的值,也就是說不能在字符串上直接修改。字面字符串既可使用雙引號也可使用單引號,但建議統一一種風格。Lua中也支持轉義字符
\a | 響鈴 | \b | 退格 |
\f | 提供表格 | \n | 換行 |
\r | 回車 | \t | 水平tab |
\v | 垂直tab | \\ | 反斜槓 |
\」 | 雙引號 | \’ | 單引號 |
除轉義字符外Lua也支持根據ASCII編碼將數字轉義爲字符。另外可使用兩對方括號」[[」」]]」一段字符串,裏面的字符串將不會被轉義。但兩對方括號並不能處理全部狀況好比字符串中包含a=b[c[i]],這中狀況能夠想塊註釋那樣,在方括號中間加任意的等號。
字符串類型轉換:說到字符串就不得不說字符串與數字之間的類型轉換。在Lua中,Lua解釋器會根據上下文自動將字符串轉換爲數字或者將數字轉換爲字符串。仍是看下面代碼的」類型轉換「部分:
a = "one string" b = 'one' print(a) --> one string print(b) --> one b=string.gsub(a,"one","other") -- 執行字符串替換 固然你也能夠這樣寫a=string.gsub(a,"one","other") print(a) --> one string print(b) --> other string -------------------------- -----------ASCII 數字轉義---------------- a = "hello worl\100" print(a) --> heloo world -----------------塊字符串,不轉義內容------------------- a = [[ <html> <head>字符串測試</head> <body><h1>http://home.cnblogs.com/u/BlueBeauty</h1> </body> </html> ]] print(a) ----------------------塊字符串,處理極端狀況---------------------------- a = [===[ <html> <head>字符串測試</head> <body><h1>http://home.cnblogs.com/u/BlueBeauty</h1><h2>a=b[c[i]]</h2> </body> </html> ]===] print(a) ---------------------類型轉換----------------------------- print("29" + 3) --> 32 print("29 + 3") --> 29 + 3 print("3.14"*"2.5") --> 7.85 --print("hello"+8) 錯誤,Lua解釋爲加法計算,但不能將hello轉換爲數字 print("hello"..8) --> hello8 --print(10..20) 這句錯誤,使用鏈接操做符時,若是第一個操做數是數字須要使用空格隔開,以下面兩句 print(10 .. 20) --> 1020 print(10 ..30) --> 1030 b = 10=="10" print(b) --> false print(10==tonumber("10")) --> true print(tostring(10)=="10") --> true -------------長度操做符的使用---------- a = "hello" print(#a) --> 5 print(#"hello worl\100 hjs") --> 15
表(table)類型:Lua中的表實現了」關聯數組「,它能使用除nil之外的任何lua類型值來索引數組。對錶更準確的理解表應該是對象。使用一對大括號{}來建立表,並且他老是匿名的。當沒有變量持有表的引用時,Lua將自動收回其內存。下面仍是經過代碼來看看錶的具體操做:
-----------------------表建立於基本訪問------------------------ a = {} --打印a的地址table: 004FC330(也就是引用) 建立一個表,沒有任何元素 print(a) tmp = "hjs" a[tmp] = 123 --添加一個項目(key=hjs , value = 123),table會動態增長和全局變量相似 a[10] = 20 --添加一個項目(key=10 , value = 20) print(a[tmp]) -->123 print(a[10]) -->20 b = a --將表引用賦值給b print(a[tmp]) -->20 a[10] = 30 --修改表中元素的值 print(a[10]) -->30 -------------表訪問另外一種語法--------------------------- a.name = "xiaoyue" print(a.name) -->xiaoyue print(a["name"]) -->xiaoyue 說明:這兩句都是訪問表中key爲name的項目 --------------獲取表大小-------------------------------- a = {} a[100] = 20 print(#a) --> 0 說明:Lua使用nil做爲數組的結束標記,a[1]的值爲nil全部這裏獲得0 (Lua中下標一般從1開始) print(table.maxn(a)) --> 100 使用table.maxn函數能夠很好的工做 -------------表索引的數據類型轉換----------------------- i =10 ; j="10";k = "+10" a = {} a[i] = "one" a[j] = "two" a[k] = "other" print(a[i]) -->one print(a[j]) -->two print(a[k]) -->other 說明: i j k 三個變量均可以轉換爲數字類型10 -- 但表訪問時並無作數據轉換,全部三個key不同 print(a[tonumber(j)]) -->one print(a[tonumber(k)]) -->one
數據類型就先說到這裏吧,後面還有幾個函數等類型就放在之後說了。