Lua表达式和控制结构学习笔记


Posted in Javascript onDecember 15, 2014

算术操作符

Lua 的算术操作符有:

"+"(加法):

print(1 + 2)

"-"(减法):

print(2 - 1)

"*"(乘法):

print(1 * 2)

"/"(除法):

print(1 / 2)

"^"(指数):

print(27^(-1/3))

"%"(取模):

print(5 % 3)

关系操作符

Lua 提供以下关系操作符:

< > <= >= == ~=

以上操作符返回的运算结果都是 true 或 false。字符串跟数字不可以进行比较

逻辑操作符

逻辑操作符有 and、or、not

print(1 and 2)

print(nil and 1)

print(false and 2)

print(1 or 2)

print(false or 5)

逻辑操作符将 false 和 nil 视为假,其它的为真。

局部变量与作用域

Lua 通过 local 语句来创建局部变量,局部变量的作用域仅限于声明它们的那个块。

local a, b = 1, 10

if a < b then

    print(a)

    local a

    print(a)

end

print(a, b)

用局部变量 local 保存全局变量,可以加速在当前作用域中对全局变量的访问。对于加速的效果,对比下面计算 斐波那契数列(Fibonacci)的执行时间便知:

function fibonacci(n)

    if n < 2 then

        return n

    end

    return fibonacci(n - 2) + fibonacci(n - 1)

end

io.write(fibonacci(50), "\n")

使用局部变量 local

local function fibonacci(n)

    if n < 2 then

        return n

    end

    return fibonacci(n - 2) + fibonacci(n - 1)

end

io.write(fibonacci(50), "\n")

控制结构

if then elseif else end

if num == 1 then

    print(1)

elseif num == 2 then

    print(2)

else

    print("other")

end

Lua 不支持 switch 语句

while

先判断 while 条件,如果条件为真,继执行循环体,否则结束

local i = 1

while a[i] do

    print(a[i])

    i = i + 1

end

repeat-until

先执行一次循环体,再判断条件,如果条件为真则退出循环体,否则继续执行循环体。类似其它语言的 do-while 语句,循环体至少会执行一次

local a = 1

repeat

    a = a + 1

    b = a

    print(b)

until b < 10

for 循环

for 循环语句有两种形式:数字型for(numeric for)、泛型for(generic for)

数字型 for 语法:

for start, end, step do

    doing something

end

start 是开始值,end 是结束值,step是步长(可选,默认为1)

for a = 10, 0, -2 do

    print(a)

end

泛型 for 循环通过一个迭代器(iterator)函数来遍历所有值:

tab = { key1 = "val1", key2 = "val2", "val3" }

for k, v in pairs(tab) do

    if k == "key2" then

        break   

    end

    print(k .. " - " .. v)

end

break 和 return 语句用于跳出当前执行的块。
Javascript 相关文章推荐
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
Feb 27 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
Dec 31 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
webpack5 联邦模块介绍详解
Jul 08 Javascript
javascript实现京东快递单号的查询效果
Nov 30 Javascript
如何在node的express中使用socket.io
Dec 15 #Javascript
node.js中使用socket.io制作命名空间
Dec 15 #Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 #Javascript
node.js中的fs.fstat方法使用说明
Dec 15 #Javascript
node.js中的fs.readFileSync方法使用说明
Dec 15 #Javascript
node.js中的fs.readFile方法使用说明
Dec 15 #Javascript
node.js中的fs.linkSync方法使用说明
Dec 15 #Javascript
You might like
第四章 php数学运算
2011/12/30 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php include和require的区别深入解析
2013/06/17 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
整理AngularJS中的一些常用指令
2015/06/16 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
Python多进程编程技术实例分析
2014/09/16 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python实现注册登录系统
2017/08/08 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
python format 格式化输出方法
2018/07/16 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
汽车销售求职自荐信
2013/10/01 职场文书
见习期自我鉴定
2013/11/07 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
高三政治教学反思
2014/02/06 职场文书
企业法人代表证明书
2014/09/27 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
二胎满月酒致辞
2015/07/29 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫