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 陷阱 window全局对象
Nov 26 Javascript
js 操作css实现代码
Jun 11 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
JavaScript中双叹号(!!)作用示例介绍
Apr 10 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
Jan 26 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
JavaScript轮播停留效果的实现思路
May 24 Javascript
vue和webpack安装命令详解
Jun 15 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
详解ES6中class的实现原理
Oct 03 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
JavaScript修改css样式style
2008/04/15 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python中属性和描述符的正确使用
2016/08/23 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
python进度条显示之tqmd模块
2020/08/22 Python
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
学校清洁工岗位职责
2015/04/15 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python