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

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

1. 函数的使用

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

例e02.lua

  1. -- functions 
  2. function pythagorean(a, b) 
  3. local c2 = a^2 + b^2 
  4. return sqrt(c2) 
  5. end 
  6. 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

  1. -- Loops 
  2. for i=1,5 do 
  3. print("i is now " .. i) 
  4. 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

  1. -- Loops and conditionals 
  2.  for i=1,5 do 
  3.  print(“i is now “ .. i) 
  4.  if i < 2 then 
  5.  print(“small”) 
  6.  elseif i < 4 then 
  7.  print(“medium”) 
  8.  else 
  9.  print(“big”) 
  10.  end 
  11.  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.

例如

  1. if op == "+" then 
  2. r = a + b 
  3. elseif op == "-" then 
  4. r = a - b 
  5. elseif op == "*" then 
  6. r = a*b 
  7. elseif op == "/" then 
  8. r = a/b 
  9. else 
  10. error("invalid operation") 
  11. end 

4.试试看

Lua中除了for循环以外, 还支持多种循环, 请用while...do和repeat...until改写本文中的for程序

原文链接:http://tech.it168.com/j/2008-02-14/200802141336501.shtml

责任编辑:陈四芳 来源: 来自ITPUB论坛
相关推荐

2013-12-13 15:42:32

Lua脚本语言

2013-12-13 16:46:18

Lua脚本语言

2013-12-12 17:30:03

Lua例子

2013-12-13 16:53:00

Lua脚本语言C++

2013-12-13 15:54:32

Lua脚本语言

2011-08-23 16:59:16

C++LUA脚本LUA API

2021-01-12 06:42:50

Lua脚本语言编程语言

2011-08-23 11:13:56

Lua

2017-05-31 17:09:52

LinuxShell命令

2011-09-01 16:45:15

J2MELua

2010-11-04 10:55:16

DB2流程控制

2011-08-23 13:27:46

Luaglobal变量

2010-05-11 12:53:58

Unix awk

2023-06-08 17:20:37

Lua树莓派

2014-12-24 10:00:33

Lua

2011-08-23 15:34:56

Lua模式 匹配

2011-08-24 11:03:33

LUA环境 安装

2011-08-24 14:14:13

LUA环境 配置

2009-12-15 09:56:51

Ruby流程控制

2011-08-23 16:37:05

Lua数学库
点赞
收藏

51CTO技术栈公众号