2.0.1探討Lua的基礎(chǔ)知)

<p>在筆記之前袍啡,先提供16年5月31日在官網(wǎng)下載的LuaForWIndows的解釋器安裝包:點我<a title="Title">LuaForWindows.zip</a>,寶典上提到的你應(yīng)該使用5.1的最小版本乱投。</p>
<p><h6>廢話</h6>
Lua解釋器是交互的夸盟,你輸入命令就可以得到回復萤衰,就像是你在用Lua這門語言和解釋器進行對話一般。雙擊執(zhí)行你的Lua解釋器輸入print("Hello World")就會回顯到你解釋器的下一行坏瞄。這行語句獲取你輸入的字符串桂对,然后將它傳遞給了print(args)這個函數(shù),該函數(shù)再將它輸出到解釋器窗口中鸠匀。
對于Lua錯誤信息的理解接校,你可以使用一個案例來進行解讀,在輸入pnrint("Hello World!")之后enter執(zhí)行狮崩,你會發(fā)現(xiàn)如下的信息<h6>[PS:lua中--代表注釋]</h6>

stdin:1: attempt to call global 'pnrint' (a nil value)--這里指出了錯誤發(fā)生的行數(shù)
stack traceback:
        stdin:1: in main chunk
        [C]: ?

如上所示Lua提示你試圖調(diào)用一個全局的pnrint(args)蛛勉,但是她是一個空值,剩余的信息叫做棧追蹤[stack traback]睦柴,他指出了錯誤出現(xiàn)在哪里诽凌,當你從一個函數(shù)調(diào)用另一個函數(shù)的他們很有用。另外使用上下鍵可以快速翻閱你的輸入歷史記錄坦敌。
</p>
<h6>Lua處理數(shù)字</h6>
<p>
輸入print(2+2)你會看見系統(tǒng)響應(yīng)一個4侣诵,因為解釋器幫你做了運算操作,Lua的運算操作符支持如下:
<li>+:加狱窘,如上個例子所示
<li>-:減杜顺,同上,變更符號即可
<li>*:乘蘸炸,同上
<li>/:除躬络,同上
<li>^:冪,example:print(13^2)=169
<li>%:取模搭儒,example:print(13%2)=1
<li>-: 取負穷当,example:print(-(13^2))=-1</li>
也可以使用復雜的表達式提茁,注意運算的優(yōu)先級和括號的使用即可,即確保明確的數(shù)據(jù)關(guān)系馁菜。
對于比較大的數(shù)值茴扁,比如1,000,000,000,000,000(10^15),你可以使用科學計數(shù)法來進行表示解釋器能夠識別:

> print(10^15)
1e+015
> print(-10^15)
-1e+015
>

Lua為了將他們顯示出來汪疮,先將他們轉(zhuǎn)化成了科學記數(shù)法峭火,同時你也可以以這種方式來表達一個數(shù)字,表示取一個數(shù)10的幾次冪智嚷,冪指數(shù)為第二個數(shù)字(中間的e不區(qū)分大小寫):

> print(1.234e6)
1234000
> print(1.234\*10\*10\*10\*10\*10\*10)
1234000
> print(1234e-4)
0.1234
> print(1234\*(10^-4))
0.1234

十六進制表示法:Lua可以自動的將十六進制的數(shù)值轉(zhuǎn)換成十進制躲胳,以0x開頭后面接著有效的0~F十六進制數(shù)字:

> print(0x1)
1
> print(0xF)
15
> print(0x19)
25
> print(0x10a4)
4260

coding時你可以使用這種格式來表示數(shù)字,Lua會對他們進行正確的轉(zhuǎn)換纤勒,Lua僅以十進制或者科學記數(shù)法來表示結(jié)果坯苹,不管這些數(shù)字是怎么輸入的。

> print(2\*0xF)
30
> print(0x10^2)
256

</p>
<p><h6>關(guān)于浮點的理解</h6>
在Lua中每一個數(shù)都是使用浮點來進行表示的摇天,在一般的使用中沒有什么不妥的地方粹湃,但有時候....

> pointTwo = 1.2 - 1.0
> print(pointTwo<0.2)
true
> print(pointTwo)
0.2

顯然,在這里0.2不能夠被精確的表示為一個浮點數(shù)泉坐,因此編程語言必須在計算他的值和顯示他的時候進入舍入为鳄。浮點數(shù)可以精確的表示所有的10-37~1037之間的整數(shù),所以你不會嘗嘗用到這個問題腕让。然而孤钦,舍入在您使用實數(shù)的時候可能會導致計算誤差。
</p>
<p>
<h6>值和變量的理解</h6>
Lua和其他編程語言一樣對于值和和變量之間進行了區(qū)分纯丸。了解值的種類和變量之間的區(qū)別對我們接下來的工作很有幫助偏形。
什么是值?
他就是你直接使用的東西觉鼻,就想17這個數(shù)俊扭,或者"hello"這個字符串。14是一個不同于17的值坠陈,但是他們都是一個數(shù)值萨惑,字符串"hello"是一個值,但是他和14仇矾、17是不同類型的值庸蔼。
Lua提供了如下的幾種基本數(shù)據(jù)類型
<li>number 所有的數(shù)字都屬于這一類 example:1、7313贮匕、1e5姐仅、0xFF1a
<li>string 一個字符序列 example:"Hello"
<li>boolean 真(true)和假(false)屬于這種類型
<li>function 函數(shù)是一個可以調(diào)用的語句集合
<li>table 表示傳統(tǒng)的哈希(Hash)表(字典)和數(shù)組的混合類型
<li>thread 線程類型的值是一個可用于異步計算的協(xié)同程序(有限的輕量線程)
<li>userdata 用戶數(shù)據(jù)是主語言(host language,通常是C)中所定義的傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)包裝器
這幾種數(shù)據(jù)類型都會在以后的工作中出現(xiàn),需要進行仔細的理解萍嬉。
</p>
</p>
<h6>使用type(args)函數(shù)</h6>
type(args)在Lua中用于確定一個給定值的類型乌昔,它會給你在編程中進行確認和驗證帶來更大的靈活性:

> print(type(t))
nil
> print(type(5))
number
> print(type(""))
string
> print(type(table))
table

如上所示隙疚,你對于傳入的值進行了type(args)函數(shù)的調(diào)用壤追,并且對他的結(jié)果進行了print(args)調(diào)用,所以它輸出了你傳入的值是何種類型供屉,指的注意的是行冰,第一個輸出中,Lua解釋器給出了nil因為解釋器他找不到這個類型伶丐,所以他總是nil的悼做。</p>
<p>
<h6>使用變量</h6>
變量可以看做是一個Lua值的臨時名稱,而同一個可以有多個名稱哗魂。比如如下的例子:

> x=2
> y=2
> print(x+y)
4

這個例子中肛走,你將x、y兩個變量分別綁定了一個值2录别,然后調(diào)用print(args)進行輸出朽色。
變量名的命名規(guī)范:必須以下劃線或者字母開頭。名稱本身不能包含有除字母组题、數(shù)字或者下劃線之外的其他字符葫男。同時也不能是關(guān)鍵字,并且是區(qū)分大小寫的崔列。
變量的賦值:

> foo=14
> print(foo)
14
> foo="hello"
> print(foo)
hello
> x=12--將數(shù)值4綁定到x
> y=x+2--將標識符x的值賦予標識符y并+2梢褐。這在字面上表示y=12+2
> print(x+y)
26
> x=15--如果你將x從新賦值,那么也只是意味著你將x重新綁定了值赵讯,與y無關(guān)
> print(x+y)
29
--值和變量之前的區(qū)別嘗嘗會被混淆盈咳,尤其是你在更高級的論題上工作的時候,你可以使用Lua解釋器作
--為一個工具來探索這些規(guī)則

對多個變量賦值的形式:

> x,y=12,13--如果運算符左邊的變量個數(shù)比右邊多边翼,那么剩下的變量會被賦予nil值
> print(x+y)
25

</p>
<p>
<h6>Lua中關(guān)于值的比較</h6>
Lua中的比較運算符由如下幾種可供操作:
<li>相等 ==
<li>小于 <
<li>大于 >
<li>小于等于 <=
<li>大于等于 >=
<li>不等于 ~=</li>
“<”猪贪,“>”,“<=”讯私,“>=”運算符只能用來比較相同類型的值热押,例如在數(shù)和數(shù)之間或者字符串和字符串之間進行比較,否則你會收到下面的錯誤信息:

> print(1>="hello")
stdin:1: attempt to compare string with number
stack traceback:
        stdin:1: in main chunk
        [C]: ?

換個說法就是:“==”和“~=”適用于所有的值斤寇,而大于和小于(“<”和“>”)這一組運算符只在數(shù)值和字符串內(nèi)部有意義桶癣。

> print("hello"=="hello1")--進行字符串比較的時候比較的是他們的內(nèi)容是否相同
false
> print("hello"=="hello")
true

</p>
<p>
<h6>Using 字符串</h6>
“>”、“<” 運算符可以在字符串上使用娘锁,但是結(jié)果將取決于系統(tǒng)內(nèi)部對不同字符的排列次序牙寞,對于單個字符的比較,運算符比較兩個字符在字符集中的次序; 對于多個字符比較间雀,他將比較兩個字符串中第一個出現(xiàn)的不同字符悔详。

> print("hello"=="hello1")--1
false
> print("hello"=="hello")--2
true
> print("a"<"b")--3
true
> print("b">="a")--4
true
> print("abcd"<"abce")--5
true
> print("a"<"A")--6
false
> print("abcd"<"abcde")
true
> print("rests"<"test")--比較第一個出現(xiàn)的不同字符,也就是拿著'r'和't'比較
true

第6個例子惹挟,在標準的Lua字符集中茄螃,大寫英文字母在小寫英文字母簽名,因此连锯,'a'要比'A'大归苍。
</p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市运怖,隨后出現(xiàn)的幾起案子拼弃,更是在濱河造成了極大的恐慌,老刑警劉巖摇展,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吻氧,死亡現(xiàn)場離奇詭異,居然都是意外死亡咏连,警方通過查閱死者的電腦和手機盯孙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捻勉,“玉大人镀梭,你說我怎么就攤上這事□馄簦” “怎么了报账?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長埠偿。 經(jīng)常有香客問我透罢,道長,這世上最難降的妖魔是什么冠蒋? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任羽圃,我火速辦了婚禮,結(jié)果婚禮上抖剿,老公的妹妹穿的比我還像新娘朽寞。我一直安慰自己,他們只是感情好斩郎,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布脑融。 她就那樣靜靜地躺著,像睡著了一般缩宜。 火紅的嫁衣襯著肌膚如雪肘迎。 梳的紋絲不亂的頭發(fā)上甥温,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音妓布,去河邊找鬼姻蚓。 笑死,一個胖子當著我的面吹牛匣沼,可吹牛的內(nèi)容都是我干的狰挡。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼肛著,長吁一口氣:“原來是場噩夢啊……” “哼圆兵!你這毒婦竟也來了跺讯?” 一聲冷哼從身側(cè)響起枢贿,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刀脏,沒想到半個月后局荚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡愈污,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年耀态,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂雹。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡首装,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杭跪,到底是詐尸還是另有隱情仙逻,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布涧尿,位于F島的核電站系奉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏姑廉。R本人自食惡果不足惜缺亮,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桥言。 院中可真熱鬧萌踱,春花似錦、人聲如沸号阿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倦西。三九已至能真,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粉铐。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工疼约, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝙泼。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓程剥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汤踏。 傳聞我的和親對象是個殘疾皇子织鲸,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容