Lua流程控制



掌叔
2010-01-19 14:58:02

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中除了for循环以外, 还支持多种循环, 请用while...do和repeat...until改写本文中的for程序
文章来源于[url]http://www.lupaworld.com[/url]