天天看點

《Programming in Lua 3》讀書筆記(一)

       斷斷續續的看這本書快一個月了,由于平時要上班是以讀書時間是零碎的,再加上直接看的是英文版,而自己的英語水準就那樣,是以進度不咋樣。快一個月了,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,第一章開篇的就這些,東西比較簡單,講的内容算是帶着入門吧~~

       繼續加油~!

《Programming in Lua 3》讀書筆記(一)