Lua中文教程学习笔记 (3)基本语法
2016-08-21 21:07
411 查看
Lua中文教程学习笔记 (3)基本语法
赋值语句
赋值是改变一个变量的值和改变表域的最基本的方法a = "a" t.n = t.n + 1
Lua中可以对多个变量同时赋值
a, b = 10, 20
遇到赋值语句 Lua 会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:
x, y = y, x -- swap 'x' for 'y' a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
当变量个数和值的个数不一致时,Lua 会一直以变量个数为基础采取以下策略:
a, b, c = 0, 1 print(a,b,c) --> 0 1 nil a, b = a+1, b+1, b+2 -- value of b+2 is ignored print(a,b) --> 1 2所以在对多个变量赋值的时候,必须依次对每个变量都进行赋值
局部变量与代码块
局 部 变 量 与 代 码 块( (b bl lo oc ck k )使用 local 创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块
内有效。代码块:指一个控制结构内,一个函数体,或者一个 chunk(变量被声明的那
个文件或者文本串)。
x = 10 --全局变量x local i = 1 -- 本文件内的局部变量i while i<=x do local x = i*2 -- while循环内的局部变量x print(x) --> 2, 4, 6, 8, ... i = i + 1 end if i > 20 then local x --if语句中的局部变量x x = 20 print(x + 2) else print(x) --> 10 (全局变量x) end print(x) --> 10 (全局变量x)
我们给 block 划定一个明确的界限:do..end 内的部分。当你想更好的控制局部变量的作用范围的时候这是很有用的
do local a2 = 2*a local d = sqrt(b^2 - 4*a*c) x1 = (-b + d)/a2 x2 = (-b - d)/a2 end -- 局部变量a2和d的作用域结束 print(x1, x2)
控制结构语句
if 语句
第一种形式:if conditions then then-part end;
第二种形式:
if conditions then then-part else else-part end;
第三种形式:
if conditions then then-part elseif conditions then elseif-part .. --->多个 elseif else else-part end;
while语句
while condition do statements; end;
repeat-until语句
repeat statements; until conditions;
for语句
数值 for 循环
for var=exp1,exp2,exp3 do loop-part end
for 将用 exp3 作为 step 从 exp1(初始值)到 exp2(终止值),执行 loop-part。其中exp3 可以省略,默认 step=1
有几点需要注意:
1. 三个表达式只会被计算一次,并且是在循环开始前
for i=1,f(x) do print(i) end
f(x)只会在循环进行之前计算一次
2.控制变量 var 是局部变量自动被声明,并且只在循环内有效
for i=1,10 do print(i) end max = i -- 由于i是for循环内的局部变量这里可能会报错
如果需要保留控制变量的值,需要在循环中将其保存
3. 循环过程中不要改变控制变量的值,那样做的结果是不可预知的。如果要退出循
环,使用 break 语句
范型 for 循环
for i,v in ipairs(a) do print(v) end
break语句和return语句
break语句break 语句用来退出当前循环(for,repeat,while)。在循环外部不可以使用。
return语句
return 用来从函数返回结果,当一个函数自然结束结尾会有一个默认的 return。Lua 语法要求 break 和 return 只能出现在 block 的结尾一句(也就是说:作为 chunk的最后一句,或者在 end 之前,或者 else 前,或者 until 前)
例如:
local i = 1 while a[i] do if a[i] == v then break end i = i + 1 end
有时候为了调试或者其他目的需要在 block 的中间使用 return 或者 break,可以显式
的使用
do break/return end
来实现:
相关文章推荐
- 【Lua学习笔记】 --> 《类型与值、表达式与基本语法》
- Lua学习笔记(二):基本语法
- lua中文教程【基本语法】
- Lua中文教程学习笔记 (1) 类型和值
- Lua中文教程学习笔记 (5) 再论函数
- PHP第一季视频教程.李炎恢.学习笔记(四)(第2章 基本语法(3))
- Lua中文教程学习笔记 (2) 表达式
- lua学习笔记之基本语法
- PHP第一季视频教程.李炎恢.学习笔记(三)(第2章 基本语法(2))
- Lua中文教程学习笔记 (4) 函数
- JavaScript 标准参考教程--基本语法 学习笔记
- PHP第一季视频教程.李炎恢.学习笔记(二)(第2章 基本语法(1))
- Lua学习笔记之lua基本语法DAY1
- Lua简单学习(lecture 1)教程、安装、基本语法
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第19讲_js运行原理_js开发工具介绍_js程序(hello)_js基本语法_学习笔记_源代码图解_PPT文档整理
- 韩顺平_php从入门到精通_视频教程_第2讲_html运行原理②_html文件基本结构_html元素和属性_学习笔记_源代码图解_PPT文档整理
- JavaScript学习笔记(一) js基本语法
- J2SE学习笔记3 — Java基本语法(6)基本输入输出
- 【Java Web 学习笔记】Day 2 JSP的基本语法
- Lua学习笔记(1)--基本知识介绍