Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)類型
從本篇博客開始研究一下Lua,現(xiàn)在的Lua真得是很火,因為Cocos2d-x寫游戲的時候會用到,所以就拿過來學(xué)學(xué)吧,先從基礎(chǔ)的語法開始,然后慢慢的深入。本人也是剛剛學(xué)習(xí),希望和學(xué)習(xí)Lua的大家交流,博客權(quán)當(dāng)筆記,有錯誤之處還請賜教。
當(dāng)然首先是開發(fā)環(huán)境了,我的學(xué)習(xí)背景是Cocos2d-x,所以下載了最近發(fā)布的Cocos Code IDE版本,我們可以在Cocos Code IDE上邊新建工程,然后寫Lua測試代碼,關(guān)于Cocos Code IDE的使用官方有不少的教程,這里就不說了。當(dāng)然你也可以在控制臺下寫一些Lua命令,這種和命令行交互的方式比較適合簡單的測試,需要做得工作是下載Lua,然后在控制臺敲入Lua,在Mac下下載Lua只需要敲入命令brew install lua就搞定了,如果你沒有安裝brew,就先安裝一下brew,最后如圖所示代表你就成功了。
環(huán)境搭建好了以后就開始來接觸一下這個腳本語言吧。首先是最基礎(chǔ)的Lua類型,下面一一介紹。
--nil --Lua中特殊的類型,他只有一個值:nil,一個全局變量沒有被賦值以前默認(rèn)值為nil,給全局變量負(fù)nil可以刪除該變量。 print(i) i = nil --booleans --兩個取值false和true。但要注意Lua中所有的值都可以作為條件。在控制結(jié)構(gòu)的條件中除了false和nil為假, --其他值都為真。所以Lua認(rèn)為0和空串都是真。 --numbers --表示實數(shù),Lua中沒有整數(shù)。用實數(shù)代替整數(shù)不會有什么誤差(除非數(shù)字大于100,000,000,000,000)。Lua的numbers可以處理任何長整數(shù)不用擔(dān)心誤差。 --strings --字符串類型,Lua中字符串是不可以修改的,你可以創(chuàng)建一個新的變量存放你要的字符串 local a = "hello lua" local b = string.gsub(a,"hello","hi") print(a) print(b) --可以使用單引號或者雙引號表示字符串 a = "a line" b = 'another line' --lua同樣支持轉(zhuǎn)義字符 --\a bell --\b back space -- 后退 --\f form feed -- 換頁 --\n newline -- 換行 --\r carriage return -- 回車 --\t horizontal tab -- 制表 --\v vertical tab --\\ backslash -- "\" --\" double quote -- 雙引號 --\' single quote -- 單引號 --還可以使用[[...]]表示字符串。這種形式的字符串可以包含多行,也可以嵌套且不會解釋轉(zhuǎn)義序列, --如果第一個字符是換行符會被自動忽略掉。 local code = [[ \b back space -- 后退 \f form feed -- 換頁 \n newline -- 換行 ]] print(code) --運行時,Lua會自動在string和numbers之間自動進(jìn)行類型轉(zhuǎn)換,當(dāng)一個字符串使用算術(shù)操作符時, --string就會被轉(zhuǎn)成數(shù)字。 print("10" + 1) --> 11 --當(dāng)Lua期望一個string而碰到數(shù)字時,會將數(shù)字轉(zhuǎn)成string。..是字符串連接符,將字符串連接起來,當(dāng)連接倆個數(shù)字 --的時候,注意數(shù)字后邊要有空格 print(10 .. 20) --> 1020 --如果需要顯式將string轉(zhuǎn)成數(shù)字可以使用函數(shù)tonumber(),如果string不是正確的數(shù)字該函數(shù)將返回nil。 --反之,可以調(diào)用tostring()將數(shù)字轉(zhuǎn)成字符串,這種轉(zhuǎn)換一直有效 print(1+tonumber(2)) -->3 print(tostring(100)) -->100 --function --函數(shù)是第一類值(和其他變量相同),意味著函數(shù)可以存儲在變量中,可以作為函數(shù)的參數(shù),也可以作為函數(shù)的返回值。 --Userdata and Threads --userdata就是用戶數(shù)據(jù)類型,指的是自己定義的類型,userdata在Lua中除了賦值和相等比較外沒有預(yù)定義的操作 --thread代表線程 --table表 比較重要 以上三個數(shù)據(jù)類型在其他博客說明 --變量的作用域 --全局變量不需要聲明,給一個變量賦值后即創(chuàng)建了這個全局變量,訪問一個沒有初始化的全局變量也不會出錯, --只不過得到的結(jié)果是:nil. print(i) -->nil --聲明一個局部變量使用local 局部變量只在局部代碼塊中有效,比如在循環(huán)中,if語句中,do end代碼塊中 --我們應(yīng)該盡可能的使用局部變量 local j = 1 do local k = 1 end print(k) -->nil --標(biāo)示符 --字母(letter)或者下劃線開頭的字母、下劃線、數(shù)字序列.最好不要使用下劃線加大寫字母的標(biāo)示符,因為Lua的保留字也是這樣的。 --注意:Lua是大小寫敏感的. --注釋:單行注釋:-- --多行注釋:--[[ --]]
- 詳解Lua中的數(shù)據(jù)類型
- Lua判斷數(shù)據(jù)類型的方法
- 實現(xiàn)Lua中數(shù)據(jù)類型的源碼分享
- Lua數(shù)據(jù)類型介紹
- Lua中的基本數(shù)據(jù)類型詳細(xì)介紹
- 深入探究Lua中的解析表達(dá)式
- Lua教程(三):表達(dá)式和語句
- Lua學(xué)習(xí)筆記之表達(dá)式
- Lua表達(dá)式和控制結(jié)構(gòu)學(xué)習(xí)筆記
- Lua中的操作符和表達(dá)式總結(jié)
- Lua基礎(chǔ)教程之賦值語句、表達(dá)式、流程控制、函數(shù)學(xué)習(xí)筆記
- Lua學(xué)習(xí)筆記之運算符和表達(dá)式
- Lua中基本的數(shù)據(jù)類型、表達(dá)式與流程控制語句講解
相關(guān)文章
Lua中讓回調(diào)函數(shù)支持回調(diào)對象方法的解決方法
這篇文章主要介紹了Lua中讓回調(diào)支持對象方法,一般情況下,Lua中只支持回調(diào)一個函數(shù),本文方法實現(xiàn)可以回調(diào)一個對象的方法,需要的朋友可以參考下2014-12-12Lua中實現(xiàn)sleep函數(shù)功能的4種方法
這篇文章主要介紹了Lua中實現(xiàn)sleep函數(shù)功能的4種方法,本文講解了在一個死循環(huán)中設(shè)置一個跳出條件方法、調(diào)用系統(tǒng)的sleep函數(shù)法、Windows下ping命令法、socket庫中select函數(shù)法4種方法,需要的朋友可以參考下2015-04-04Lua教程(五):C/C++操作Lua數(shù)組和字符串示例
這篇文章主要介紹了Lua教程(五):C/C++操作Lua數(shù)組和字符串示例,本文同時還講解了如何在C/C++函數(shù)里面存儲Lua狀態(tài),需要的朋友可以參考下2014-09-09Lua中類的實現(xiàn)原理探討(Lua中實現(xiàn)類的方法)
這篇文章主要介紹了Lua中類的實現(xiàn)原理探討(Lua中實現(xiàn)類的方法),本文同時講解了metatable、元方法等內(nèi)容,需要的朋友可以參考下2014-10-10Lua編程示例(一):select、debug、可變參數(shù)、table操作、error
這篇文章主要介紹了Lua編程示例(一):select、debug、可變參數(shù)、table操作、error,本文直接給出代碼實例,需要的朋友可以參考下2015-07-07