斷斷續續的看這本書快一個月了,由于平時要上班是以讀書時間是零碎的,再加上直接看的是英文版,而自己的英語水準就那樣,是以進度不咋樣。快一個月了,300來頁的電子版至今才看到40來頁。當然一開始我也沒做很快就要看完這本書的打算,因為Lua對于我來說是一種新的語言,本身C++熟練度就有待提高,現在學Lua也是本着提升自己技能而出發的。是以一開始的決定就是慢慢來,學了看了就得懂,要盡量做到學了一遍就會用。
一開始沒有打算寫筆記,這跟我當時自學C++不一樣。學C++的時候,我看《C++ Primer 4》的時候差不多是一手書本一手筆記本這樣學過來的,是以看完那本書我的筆記本也差不多寫滿了。現在學Lua沒有做筆記,總感覺少了點啥,又加上看的是英文版,後來想想看完書寫寫學習筆記或許能加深自己的了解,是以在學了快一個月的時候,開始決定寫學習筆記了。現在看到part1的第三章了,然後慢慢把前面的内容整理下,當做是複習吧。
所有的代碼都是在mac環境下用終端或者sublime編寫的。
《Programming in Lua 3》Part1
1.Getting Started
一開始的"Hello World"是很簡單的,然而第二個稍微複雜點的函數則出了點問題:
--define a factorial function
function fact(n)
if n == 0 then
return 1
else
return n * fact(n-1)
end
end
print("enter a number:")
a = io.read("*n")
print(fact(a))
這是一個簡單的階乘函數,由于我是參考網友建議用的sublime編輯器,我用sublime運作這段代碼老是有問題,查了下就是 a = io.read("*n") 這裡,a得不到資料,而我轉用mac上的終端運作這段代碼則能運作成功。對于這個問題我目前不知道該怎麼處理,留下個疑問吧~這裡的簡單使用到了Lua的函數,以function開始,後接函數名和參數表,以end結尾。函數相關的在之後有詳細介紹。
1.1 Chunks (語句塊)?
a. Lua中語句間可以用";"分隔符也可以不用,因而以下語句都是合理的:
a = 1
a = 1;
a = 1; b = 2
a = 1 b = 2
因個人習慣不同,可以有不同的使用風格。
b. 如果已經配置好了mac下的Lua環境,則運作終端,輸入"lua",則進入了lua的運作環境(不知道可不可以這麼說),退出則是(ctrl -d UNIX,ctrl -z Windows),或者輸入os.exit()指令退出。
c. 書上提到的-i指令暫時不知道如何使用,在sublime裡面輸入這個會報錯,不知道是啥原因。而另外一個函數dofile則使用成功,相當于在一個lua腳本檔案中調用另外一個lua腳本檔案,如在test1.lua中寫dofile("test2.lua"),則相當于打開了test2.lua檔案,可以調用這個檔案中定義的一些東西。書作者也是這麼推薦,如果一個chunk過于龐大,則推薦将其單獨寫一個腳本檔案,然後用-i指令或者dofile函數調用這個腳本檔案。
1.2 Some Lexical Conventions (文法約定)?
a. 關于變量命名:Lua中的變量命名可以是字母、數字和下劃線,并且規定不能以數字開頭。這個和C++裡面的一樣。并且作者也告誡了變量命名的時候不要使用連續的大寫字母,因為lua對這種命名方法有特殊的用途。而作者也約定了将下劃線用于虛變量(?)的命名。
當然,和C++一樣,有一些變量名是不能随便用的,如and、break、do之類的,這個是lua要用的;
并且,lua是區分大小寫的,這意味着do和Do、DO表示的是三個意思。
b.關于注釋:
lua也提供了兩種注釋的方式:
單行注釋的話以"--"開頭,如:
--test comment
多行注釋的話以"--"開頭,後面接"[[]]",如:
--[[
test comment
]]
還有一種方式是"--[[ --]]",如:
---[[
comment
--]]
而較有意思的是,針對多行注釋的第二種形式,在:--[[前面再加一個-便整體取消了注釋,如:
我覺得這樣挺友善的。
1.3 Global Variables
Lua中的全局變量不需要初始化就可以使用,沒有初始化的變量使用的時候,其值為nil;而當我們将某個全局變量指派為nil,系統便會回收該變量占用的記憶體,是以這應該能了解為Lua的記憶體回收機制吧?
1.4 The Stand-Alone Interpreter
這一部分的内容暫時沒有看懂講的是什麼,主要是我在sublime裡面實作不了這部分所講的東西。。。
OK,第一章開篇的就這些,東西比較簡單,講的内容算是帶着入門吧~~
繼續加油~!
