通过例子学习Lua(2)—Lua流程控制

1. 函数的使用

以下程序演示了如何在Lua中使用函数, 及局部变量

例e02.lua

-- functions 


function pythagorean(a, b) 


local c2 = a^2 + b^2 


return sqrt(c2) 


end 


print(pythagorean(3,4)) 

运行结果

5

程序说明

在Lua中函数的定义格式为:

function 函数名(参数)

...

end

与Pascal语言不同, end不需要与begin配对, 只需要在函数结束后打个end就可以了.

本例函数的作用是已知直角三角形直角边, 求斜边长度. 参数a,b分别表示直角边长,

在函数内定义了local形变量用于存储斜边的平方. 与C语言相同, 定义在函数内的代

码不会被直接执行, 只有主程序调用时才会被执行.

local表示定义一个局部变量, 如果不加local刚表示c2为一个全局变量, local的作用域

是在最里层的end和其配对的关键字之间, 如if ... end, while ... end等。全局变量的

作用域是整个程序。

2. 循环语句

例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 变量 = 参数1, 参数2, 参数3 do

循环体

end

变量将以参数3为步长, 由参数1变化到参数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在处理的时候会自动转成字符串型,不需偶们费心。

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

相关推荐