通過例子學習Lua(2)—Lua流程控制
1. 函數(shù)的使用
以下程序演示了如何在Lua中使用函數(shù), 及局部變量
例e02.lua
- -- functions
- function pythagorean(a, b)
- local c2 = a^2 + b^2
- return sqrt(c2)
- end
- print(pythagorean(3,4))
運行結果
5
程序說明
在Lua中函數(shù)的定義格式為:
function 函數(shù)名(參數(shù))
...
end
與Pascal語言不同, end不需要與begin配對, 只需要在函數(shù)結束后打個end就可以了.
本例函數(shù)的作用是已知直角三角形直角邊, 求斜邊長度. 參數(shù)a,b分別表示直角邊長,
在函數(shù)內(nèi)定義了local形變量用于存儲斜邊的平方. 與C語言相同, 定義在函數(shù)內(nèi)的代
碼不會被直接執(zhí)行, 只有主程序調(diào)用時才會被執(zhí)行.
local表示定義一個局部變量, 如果不加local剛表示c2為一個全局變量, local的作用域
是在最里層的end和其配對的關鍵字之間, 如if ... end, while ... end等。全局變量的
作用域是整個程序。
2. 循環(huán)語句
例e03.lua
- -- Loops
- for i=1,5 do
- print("i is now " .. i)
- end
運行結果
i is now 1
i is now 2
i is now 3
i is now 4
i is now 5
程序說明
這里偶們用到了for語句
for 變量 = 參數(shù)1, 參數(shù)2, 參數(shù)3 do
循環(huán)體
end
變量將以參數(shù)3為步長, 由參數(shù)1變化到參數(shù)2
例如:
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end
這里print("i is now " .. i)中,偶們用到了..,這是用來連接兩個字符串的,
偶在(1)的試試看中提到的,不知道你們答對了沒有。
雖然這里i是一個整型量,Lua在處理的時候會自動轉(zhuǎn)成字符串型,不需偶們費心。
3. 條件分支語句
例e04.lua
- -- Loops and conditionals
- for i=1,5 do
- print(“i is now “ .. i)
- if i < 2 then
- print(“small”)
- elseif i < 4 then
- print(“medium”)
- else
- print(“big”)
- end
- end
運行結果
i is now 1
small
i is now 2
medium
i is now 3
medium
i is now 4
big
i is now 5
big
程序說明
if else用法比較簡單, 類似于C語言, 不過此處需要注意的是整個if只需要一個end,
哪怕用了多個elseif, 也是一個end.
例如
- if op == "+" then
- r = a + b
- elseif op == "-" then
- r = a - b
- elseif op == "*" then
- r = a*b
- elseif op == "/" then
- r = a/b
- else
- error("invalid operation")
- end
4.試試看
Lua中除了for循環(huán)以外, 還支持多種循環(huán), 請用while...do和repeat...until改寫本文中的for程序
原文鏈接:http://tech.it168.com/j/2008-02-14/200802141336501.shtml