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 相关文章推荐
Add a Picture to a Microsoft Word Document
Jun 15 Javascript
javaScript 关闭浏览器 (不弹出提示框)
Jan 31 Javascript
多种方法实现load加载完成后把图片一次性显示出来
Feb 19 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
小程序实现长按保存图片的方法
Dec 31 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
Apr 15 Javascript
js实现微信聊天效果
Aug 09 Javascript
jQuery实现回到顶部效果
Oct 19 jQuery
如何在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
Zend的MVC机制使用分析(一)
2013/05/02 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
Django数据库操作的实例(增删改查)
2017/09/04 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python同时遍历两个list用法说明
2020/05/02 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
办公室保洁员岗位职责
2013/12/02 职场文书
家长对学生的评语
2014/04/18 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers