Lua 學(xué)起來非常簡單?,F(xiàn)在,讓我們開始創(chuàng)建我們的第一個 Lua 程序吧!
Lua 提供交互式編程模式。在這個模式下,你可以一條一條地輸入命令,然后立即就可以得到結(jié)果。你可以在 shell 中使用 lua -i 或者 lua 命令啟動。輸入命令后,按下回車鍵,就啟動了交互模式,顯示如下:
$ lua -i
$ Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
quit to end; cd, dir and edit also available
你可以使用如下命令打印輸出:
$> print("test")
按下回車鍵后,你會得到如下輸出結(jié)果:
'test'
使用 Lua 文件做為解釋器的參數(shù)啟動解釋器,然后開始執(zhí)行文件直到文件結(jié)束。當(dāng)腳本執(zhí)行結(jié)束后,解釋器就不在活躍了。
讓我們寫一個簡單的 Lua 程序。所有的 Lua 文件都擴展名都是.lua
。因此,將下面的源代碼放到 test.lua 文件中。
print("test")
假如你已經(jīng)設(shè)置好 Lua 程序的環(huán)境,用下面的命令運行程序:
$ lua test.lua
我們會得到如下的輸出結(jié)果:
test
讓我們嘗試使用另外的方式運行 Lua 程序。下面是修改后的 test.lua 文件:
\#!/usr/local/bin/lua
print("test")
這里,我們假設(shè)你的 Lua 解釋器程序在 /usr/local/bin/lua 目錄下。test.lua 文件中第一行由于以 # 開始而被解釋器忽略,運行這個程序可以得到如下的結(jié)果:
$ chmod a+rx test.lua
$./test.lua
我們會得到如下的的輸出結(jié)果:
test
接下來讓我們看一下 Lua 程序的基本結(jié)構(gòu)。這樣,你可以更容易理解 Lua 編程語言的基本結(jié)構(gòu)單元。
Lua 程序是由大量的符號組成的。這些符號可以分為關(guān)鍵字、標(biāo)識符、常量、字符串常量幾類。例如,下面的 Lua 語句中包含三個符號:
io.write("Hello world, from ",_VERSION,"!\n")
這三個符號分別是:
io.write
(
"Hello world, from ",_VERSION,"!\n"
)
注釋就是 Lua 程序中的幫助文檔,Lua 解釋器會自動忽略它們。所有注釋都以 --[[ 開始,并以 --]]結(jié)束。如下所示:
--[[ my first program in Lua --]]
Lua 中標(biāo)識符是識別變量、函數(shù)或者其它用戶自定義項的名字。標(biāo)符識總是以字母或者下劃線開始,其后可以是零個或多個字母、下劃線或數(shù)字。
Lua 標(biāo)識符中不允許出現(xiàn)任何標(biāo)點符號,比如,@,$ 或者 %。Lua 是大小寫敏感的語言,因此 Manpower 和 manpower 是 Lua 中兩個不同的標(biāo)識符。下面所列的是一些合法標(biāo)識符的例子。
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
下面列表中所示的是 Lua 中一小部分保留字。這些保留字不能用作常量、變量以及任何標(biāo)識符的名字。
and | break | do | else |
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while |
如果 Lua 程序中某一行只包含空格或者注釋,那么這樣的一行被稱之為空行。 Lua 解釋器將完全忽略這一行。
在 Lua 中,空白是用來描述空格、制表符、換行符和注釋的術(shù)語??瞻追糜趯⒄Z句中的一部分與其它部分區(qū)分開,使得解釋器可以語句中的一個元素,比如 int,何處結(jié)束,以及另一個元素從何處開始。因此,在下面的語句中:
local age
在 local 與 age 之間至少有一個空白符(通常是空格),這個空白符使得解釋器可以將 local 與 age 區(qū)分開。另一方面,在下面的語句中:
fruit = apples + oranges --get the total fruit
fruit 與 = 之間以及 = 與 apples 之間的空白符都是可以沒有的。但是為了程序的可讀性目的,建議你在它們之間使用空白符。