Lua中的嵌套 if 语句
#Lua 中的嵌套 if 语句
在 Lua 语言中,你可以合法的嵌套使用 if-else 语句。这也就是说,你可以在一个 if 或 if-else 语句内再使用一个 if 或 if-else 语句。
##语法
嵌套 if 语句的语法规则如下:
if( boolean_expression 1)
then
--[ 如果布尔表达式 1 为真,则执行此处代码。 --]
if(boolean_expression 2)
then
--[ 如果布尔表达式 2 为真(注:布尔表达式 1 为真),则执行此处代码)。 --]
end
end
```
你也可以像嵌套使用 if 语句那样使用嵌套使用 else if...else 语句。
##示例
–[ 定义局部变量 --]
a = 100;
b = 200;
–[ 检查条件真假 --]
if( a == 100 )
then
–[ 如果前面的条件为真,再检查下面的条件。 --]
if( b == 200 )
then
–[ 如果条件为真,则输出如下内容 --]
print(“V ...
Lua字符串
Lua 字符串
字符串就是一个由字符或控制字符组成的序列。字符串可以用以下三种方式任意一种进行初始化。
单引号字符串
双引号字符串
[[和]]之间的字符串
上面三种初始化方式的示例如下:
string1 = "Lua"
print("\"String 1 is\"",string1)
string2 = 'Tutorial'
print("String 2 is",string2)
string3 = [["Lua Tutorial"]]
print("String 3 is",string3)
运行上面的程序,我们可以得到如下的输出结果:
"String 1" is Lua
String 2 is Tutorial
String 3 is "Lua Tutorial"
字符串中转义字符用于改变字符的一般正常的解释。在上面的例子中,输出双引号(“”)的时候,我们使用的是 "。下表列出了转义序列及相应的使用方法:
转义序列
用法
\a
响铃
\b
退格
\f
换页
\n
换行
...
Lua的变量
变量
变量就是给一块内存区域赋予的一个名字。变量使得在程序中就可以修改或读取相应的内存区域中的内容。它可以代表各种不同类型的值,包括函数与表。
变量的名字由字母、数字与下划线组成。它必须是字母或下划线开头。由于 Lua 是字母大小写敏感的,所以大写字母与小写字母是不一样的。Lua 中有八种基本值类型:
在 Lua 语言中,虽然我们没有变量数据类型,但是依据变量的作用域我们可以将变量分为三类:
全局变量:除非显示的声明一个局部变量,否则所有的变量都被默认当作全局变量。
局部变量:如果我们将一个变量定义为局部变量,那么这么变量的作用域就被限制在函数内。
表字段:这种特殊的变量可以是除了 nil 以外的所有类型,包括函数。
Lua 变量定义
一个变量定义就意味着告诉解释器在什么地方创建多大的一块存储空间。一个变量定义包括一个可选的类型( type )以及该类型的一个或多个变量名的列表,如下所示:
type variable_list;
其中,type 是可以选择指定为 local 或者不指定使用默认值 global,variable_list 是包含一个或多个由逗号分隔的标识符 ...
2016-06-01-TOC
2016-06-01-TOC
lua 基础
概述
permalink: /lua_guide/TOC/
运行环境
基本语法
变量
日期类型
操作符
循环
决策
函数
字符串
数组
迭代器
表
模块
元表
协程
文件 I/O
错误处理
lua 进阶
调试
垃圾回收机制
面向对象
Web 编程
数据库访问
游戏开发
标准库
Lua模块
Lua 模块
什么是模块?
Lua 中的模块与库的概念相似,每个模块都有一个全局唯一名字,并且每个模块都包含一个表。使用一个模块时,可以使用 require 加载模块。模块中可以包括函数和变量,所有这些函数和变量被表存储于模块的表中。模块中的表的功能类似于命名空间,用于隔离不同模块中的相同的变量名。在使用模块的时候,我们应该遵守模块定义的规范,在 require 加载模块时返回模块中的包含函数和变量的表对象。
Lua 模块的特别之处
模块中表的使用使得我们可在绝大多数情况下可以像操作其它表一样操作模块。由于 Lua 语言允许对模块本身进行操作,所以 Lua 也就具备了许多其它语言需要特殊机制才能实现的特殊性质。例如,这种自由的表操作机制使得编程人员可以用多种方法调用模块中的函数。下面的例子演示了其中的一些方法:
-- 假设我们有一个板块 printFormatter
-- 该模块有一个函数 simpleFormat(arg)
-- 方法 1
require "printFormatter"
printFormatter.simpleFormat("test")
-- 方法 2
...
repeat...until 循环
repeat…until 循环
与 for 和 while 循环中先检测条件再决定是否执行循环不同,repeat…until 先执行循环再检测条件判断是否再次执行。
除了 repeat…until 循环一定会执行一次之外,repeat…until 与 while 循环很相似。
语法
Lua 语言中 repeat…until 循环的语法如下:
repeat
statement(s)
until( condition )
请注意,条件表达式出现在循环的结束处,所以在检查条件之前,循环体中语句 statement(s) 已经执行了一次。
如果条件为假,则控制回到循环开始再次执行循环体。这个过程一直重复到条件为真时结束。
流程图
示例
--[ 局部变量定义 --]
local a = 10
--[ 重复循环执行 --]
repeat
print("value of a:", a)
a = a + 1
until( a > 15 )
执行上面的代码,将会得到如下的结果:
value of a: 10
value of a: 11
value of a: 12
valu ...
Lua的while循环
Lua while 循环
在 Lua 语言中,只要 while 循环条件为真,while 语句就会一直执行,直到 while 循环条件为假为止。
语法
Lua 语言中 while 循环的语法如下所示:
while(condition)
do
statement(s)
end
其中,statement(s) 可能只是一条语句也可能是一个语句块。条件可以是任何表达式,若表达式结果为真,则循环继续。
循环为假时,程序结束 while 循环,执行 while 后面的代码。
流程图
请注意,while 循环的关键点在于循环可能根本不会执行。当检测条件为假是,程序会跳过 while 循环体而直接执行 while 后的第一条语句。
示例
a=10
while( a < 20 )
do
print("value of a:", a)
a = a+1
end
执行上面的代码,将会得到如下的结果:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 1 ...
Lua判断
决策
决策结构要求程序开发人员设置一个或多测试或计算条件。如果条件计算结果为真,则执行一个或多个语句;如果条件为假,则执行另外的语句。
下面是大多数程序语言中的决策结构的一般形式:
Lua 语言中所有布尔真和非 nil 值都当作真;把所有的布尔假和 nil 作为假。请注意,Lua 中的零会被当作真,而其它大部分语言会将零当作假。
Lua 语言提供了如下几类决策语句。点击下面的链接查看详细内容。
语句
描述
if 语句
if 语句中包括一个布尔表达式和一个或多个语句。
if...else 语句
if 语句也可以选择和 esle 语句一起使用。当条件为假时,则执行 else 语句。
嵌套 if 语句
在 if 语句或者 else if 语句内使用 if 或者 else if。
Lua中的if语句
#Lua 中的 if 语句
if 语句包括一个布尔表达式和一个或多个语句。
##语法
Lua 语言 if 语句的语法如下:
if(boolean_expression)
then
--[如果布尔表达式为真,statement(s) 执行。--]
end
```
如果布尔表达式计算结果为真,则 if 语句内的代码块执行;如果布尔表达式计算结果为假,跳过 if 语句中的代码直接执行 if 语句后面的代码。
Lua 语言中所有布尔真与非 nil 的组合的结果被当作真,而布尔假与 nil 组合被当作假。值得注意的是,Lua 中零被当作真,这一点与其它大部分语言不一样:
##流程图

##示例
–[ 局部变量定义 --]
a = 10;
–[ 检查 if 语句使用的布尔条件 --]
if( a < 20 )
then
–[ 如果条件为真则输出如下内容 --]
...
LUA的Loop循环
循环
虽然一般情况下,语句都是顺序执行的:函数内的第一条语句先执行,然后是第二条,依次类推。 但是还是可能存在需要执行一段代码多次的情况。
为此编程语言提供各式各样的控制结构实现复杂的程序执行路径。
其中,循环语句可以让我们可以执行一条或一组语句多次。下图中所描述的是大多数语言中循环语句的形式:
Lua 语言提供了如下几种循环结构语句。点击链接可查看详细说明。
循环类型
描述
while 循环
先检测条件,条件为真时再执行循环体,直到条件为假时结束。
for 循环
执行一个语句序列多次,可以简化管理循环变量的代码。
repeat...until 循环
重复执行一组代码语句,直到 until 条件为真为止。
嵌套循环
可以在一个循环语句中再使用一个循环语句。
循环控制语句
循环控制语句改变循环正常的执行顺序。当离开一个作用域时,在该作用域内自动创建的对象都会被自动销毁。
Lua 支持如下所示的循环控制语句。点击下面的链接查看详细内容:
循环控制语句
描述
bre ...


