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 相关文章推荐
学习ExtJS border布局
Oct 08 Javascript
jquery动态加载图片数据练习代码
Aug 04 Javascript
jQuery+css实现图片滚动效果(附源码)
Mar 18 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
关于JavaScript语句后面的分号问题
Dec 07 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
vue实现数字滚动效果
Jun 29 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 Javascript
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
如何在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执行.SQL文件
2013/07/05 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
关于Python面向对象编程的知识点总结
2017/02/14 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Python笔试面试题小结
2019/09/07 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
精彩的英文自荐信
2014/01/30 职场文书
狼和鹿教学反思
2014/02/05 职场文书
遗产继承公证书
2014/04/09 职场文书
党校毕业个人总结
2015/02/28 职场文书
繁星春水读书笔记
2015/06/30 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS