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全排列的六种算法 具体实现
Jun 29 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
Sep 01 Javascript
javascript通过元素id和name直接取得元素的方法
Apr 28 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
Jul 01 Javascript
Bootstrap基本插件学习笔记之按钮(21)
Dec 08 Javascript
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
如何基于js判断浏览器版本
Feb 20 Javascript
实例分析javascript中的异步
Jun 02 Javascript
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
如何在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设计模式 State (状态模式)
2011/06/26 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javascript 数组排序函数
2009/08/20 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
Python正则表达式完全指南
2017/05/25 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
详解python中__name__的意义以及作用
2019/08/07 Python
python字符串的index和find的区别详解
2020/06/20 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
实习护理工作自我评价
2013/09/25 职场文书
医学生求职自荐信
2013/10/25 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
总经理工作职责范文
2014/03/14 职场文书
企业形象策划方案
2014/05/29 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技