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中的Split使用方法与技巧
Mar 09 Javascript
jQuery对象和DOM对象相互转化
Apr 24 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
js实现返回顶部效果
Mar 10 Javascript
javascript Function函数理解与实战
Dec 01 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
Mar 16 Javascript
vuex的数据渲染与修改浅析
Nov 26 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 第二节 数据类型之数组
2012/04/28 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
js密码强度校验
2015/11/10 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
简单实现js轮播图效果
2017/07/14 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python开启debug模式的方法
2019/06/27 Python
python django model联合主键的例子
2019/08/06 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
Python的collections模块真的很好用
2021/03/01 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
测试时代收集的软件测试面试题
2013/09/25 面试题
应届生法律求职信
2013/10/22 职场文书
党员思想汇报范文
2013/12/30 职场文书
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript