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中的$.getJSON 使用说明
Mar 10 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
May 27 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
Jun 30 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
求js数组的最大值和最小值的四种方法
Mar 03 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
Apr 29 Javascript
JavaScript实现H5接金币功能(实例代码)
Feb 22 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 和 HTML
2006/10/09 PHP
PHP开发负载均衡指南
2010/07/17 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
用jquery来定位
2007/02/20 Javascript
javascript实现轮显新闻标题链接
2007/08/13 Javascript
json 定义
2008/06/10 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python数据结构之翻转链表
2017/02/25 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
Python基于locals返回作用域字典
2020/10/17 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
vue实现倒计时功能
2021/03/24 Vue.js
机械设计职业生涯规划书
2013/12/27 职场文书
环境建议书
2015/02/04 职场文书
竞聘书的秘诀
2019/04/02 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android