lua入門

1 起步

按照傳統,我們首先用Lua實現一個”Hello World”程序:
#

print("Hello World")
如果你使用的是獨立的Lua解釋器,則運行程序的方法很簡單:你只需將你的程序文件名傳給解釋器(通常名爲lua)。比如,如果你將上面這個程序寫入到一個名爲hello.lua的文本文件中,然後通過如下命令行啓動它:
#

prompt> lua hello.lua
下面是一個稍微複雜一點的例子,下面這個程序定義了一個函數來計算階乘。它讓用戶輸入一個數字,然後打印出它的階乘。
#

-- defines 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("*number") -- 讀入一個數字
#

print(fact(a))
如果你將Lua嵌入到一個應用程序中運行,比如CGILua 或者 IUPLua,你需要讀一下相關的手冊(或請教一下能人)去了解如果運行你的程序。不過,Lua還是Lua,無論以哪種方法使用,我們在這裏看到的大多數東西都還是有效的。我們推薦你使用獨立的Lua解釋器(一個名爲lua的程序)來運行你的第一個練習程序。

1.1 程序塊

Lua執行的每一段代碼,比如一個文件甚至交互模式下的一行指令,都可以稱爲是一個“程序塊”。簡單來說,“程序塊”就是一組語句序列。

語句的結尾加分號的寫法是可選的。一般來說,我只是在把多個Lua語句寫在同一行的時候,才用分號間隔,當然,這是一個習慣問題。換行符同樣可以用來分隔語句。舉例來說,下面這四種寫法都是正確的,而且等效。
#

a = 1
#

b = a*2
#

a = 1;
#

b = a*2;
#

a = 1 ; b = a*2
#

a = 1 b = a*2 -- 不推薦這種寫法,不過確實可以這樣寫。
程序塊可以簡單到只有一條語句,像那個”Hello world”的例子,也可以是一組語句和函數的混合體,像前面的求階乘的例子。你想讓一個程序塊有多大,它就可以有多大。因爲Lua也被用作是一種“描述數據的語言”,所以,幾兆字節尺寸的程序塊並不鮮見。Lua解釋器處理這些毫無問題。
除了將你的程序寫進一個文件以外,你還可以使用Lua解釋器提供的交互模式。如果你啓動lua時不帶任何參數,你就會看到這樣的提示符:

#


Lua 5.0 Copyright (C) 1994-2003 Tecgraf, PUC-Rio
#

>
然後,你鍵入的任何指令(比如 print “Hello World”)會在你按下回車後被立即執行。如果想離開交互模式的解釋器,只需要鍵入一個“文件結束符”(在Unix系統中是Ctrl- D,DOS/Windows中是Ctrl-z),或者調用OS庫的退出函數(鍵入:os.exit() )
在交互模式下,Lua一般將每一行都看作是一個程序塊。但是,如果它檢測到這一行無法構成一個完整的程序塊,它就會等待進一步的輸入,直到其構成了完整的程序塊。當Lua等待進一步的輸入時,它會顯示一個不同的提示符(一般是>>)。因此,你可以直接在交互模式下輸入多行的定義式,就像那個求階乘的factorial函數。當然,在一些情況下,將這些程序寫入文件,再用Lua執行這個文件更方便一些。

你可以讓通過 –l 參數讓Lua解釋器順序地執行一組腳本程序。舉例來說,如果你有一個文件a,裏面只有一條語句:x=1,你還有一個文件b,裏面也只有一條語句:print(x),則命令
#

promt> lua –la –lb
會依次運行a和b,並打印出“1”。( -l 參數實際上調用了 require 函數,這個函數會查找指定路徑下的文件。所以,在前面那個例子中,如果你不寫明a和b的路徑,就無法正常運行。我們將在8.1節詳細討論require函數)

你可以使用 –i 參數告訴Lua解釋器在執行完指定文件後,進入交互模式。比如:
#

prompt> lua -i -la -lb

將先執行a中的程序塊,然後執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章