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 相关文章推荐
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
Feb 15 Javascript
stream.js 一个很小、完全独立的Javascript类库
Oct 28 Javascript
javascript object array方法使用详解
Dec 03 Javascript
javascript中有趣的反柯里化深入分析
Dec 05 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 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入门速成(2)
2006/10/09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
python之PyMongo使用总结
2017/05/26 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
pygame实现非图片按钮效果
2019/10/29 Python
python生成大写32位uuid代码
2020/03/03 Python
python轮询机制控制led实例
2020/05/03 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
4s店总经理岗位职责
2013/12/31 职场文书
运动会广播稿30字
2014/01/21 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
英语辞职信怎么写
2015/02/28 职场文书
初中语文教学反思范文
2016/03/03 职场文书