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 相关文章推荐
在JS中如何调用JSP中的变量
Jan 22 Javascript
jquery使用$(element).is()来判断获取的tagName
Aug 24 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
js实现同一页面多个运动效果的方法
Apr 10 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
JS实现的车标图片提示效果代码
Oct 10 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
简单实现jQuery轮播效果
Aug 18 jQuery
Vue 换肤的示例实践
Jan 23 Javascript
详解Vue中组件的缓存
Apr 20 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
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
prototype class详解
2006/09/07 Javascript
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
js 窗口抖动示例
2013/09/04 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
Sanic框架应用部署方法详解
2018/07/18 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
企业申诉管理制度
2014/01/30 职场文书
毕业自我评价
2014/02/05 职场文书
2014年会策划方案
2014/05/11 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
初中毕业感言300字
2015/07/31 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
Javascript webpack动态import
2022/04/19 Javascript