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 相关文章推荐
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
May 08 Javascript
js实现跨域访问的三种方法
Dec 09 Javascript
微信小程序 增、删、改、查操作实例详解
Jan 13 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
p5.js入门教程之鼠标交互的示例
Mar 16 Javascript
vue实现微信分享功能
Nov 28 Javascript
jquery登录的异步验证操作示例
May 09 jQuery
axios如何利用promise无痛刷新token的实现方法
Aug 27 Javascript
vue element-ui实现动态面包屑导航
Dec 23 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
Sep 02 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 echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
javascript设计模式之解释器模式详解
2014/06/05 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
python list转dict示例分享
2014/01/28 Python
Python读写Redis数据库操作示例
2014/03/18 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
在python3中实现更新界面
2020/02/21 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
高一自我鉴定
2013/12/17 职场文书
十佳大学生村官事迹
2014/01/09 职场文书
优秀经理事迹材料
2014/02/01 职场文书
《猫》教学反思
2014/02/26 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
女方离婚起诉书
2015/05/18 职场文书
合同补充协议书
2016/03/24 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python