Lua表达式和控制结构学习笔记

 更新时间:2014年12月15日 12:07:21   投稿:junjie  
这篇文章主要介绍了Lua表达式和控制结构学习笔记,本文讲解了算术操作符、关系操作符、逻辑操作符、局部变量与作用域、控制结构等内容,需要的朋友可以参考下

算术操作符

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 语句用于跳出当前执行的块。

相关文章

  • node.js学习之断言assert的使用示例

    node.js学习之断言assert的使用示例

    assert 模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。下面这篇文章主要给大家介绍了关于node.js学习之断言assert的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-09-09
  • Nodejs Playwright 2Captcha 验证码识别实现自动登陆功能

    Nodejs Playwright 2Captcha 验证码识别实现自动登陆功能

    日常工作当中,为了提高工作效率,我们可能会写脚本来自动执行任务,有些网站因为需要用户登陆,所以脚本的自动登陆功能必不可少,这篇文章主要介绍了Nodejs Playwright 2Captcha 验证码识别实现自动登陆功能,需要的朋友可以参考下
    2024-05-05
  • Google官方支持的NodeJS访问API,提供后台登录授权

    Google官方支持的NodeJS访问API,提供后台登录授权

    Google官方支持的NodeJS集成客户端,用以访问Google APIs, 支持OAuth 2.0授信及登录认证。登录以后即可在后台访问例如 Google Drive(云存储), Google Analytics, Gmail等服务。
    2014-07-07
  • node path的使用详解

    node path的使用详解

    这篇文章主要介绍了node path的使用详解,使用path.join()方法,可以把多个路径片段拼接为完整的路径字符串,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • node.js中module模块的功能理解与用法实例分析

    node.js中module模块的功能理解与用法实例分析

    这篇文章主要介绍了node.js中module模块的功能理解与用法,结合实例形式分析了node.js module模块的基本功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2020-02-02
  • 详解redis在nodejs中的应用

    详解redis在nodejs中的应用

    本篇文章给大家详细分析了redis在nodejs中的应,对此知识点有兴趣的朋友可以跟着学习下。
    2018-05-05
  • nodejs实现邮件发送服务实例分享

    nodejs实现邮件发送服务实例分享

    本文给大家讲解的是简单的使用nodejs搭建邮件发送服务的一个实例,非常的好用,有需要的小伙伴可以参考下
    2017-03-03
  • vscode执行npm时的一些错误以及处理办法

    vscode执行npm时的一些错误以及处理办法

    在前端开发过程中,npm的使用是少不了的,所以需要知道基本的操作使用,并且了解常见的异常情况处理,下面这篇文章主要给大家介绍了关于vscode执行npm时的一些错误以及处理办法的相关资料,需要的朋友可以参考下
    2022-07-07
  • Node.js API详解之 net模块实例分析

    Node.js API详解之 net模块实例分析

    这篇文章主要介绍了Node.js API详解之 net模块,结合实例形式分析了Node.js API中net模块基本函数、用法与使用技巧,需要的朋友可以参考下
    2020-05-05
  • 命令行批量截图Node脚本示例代码

    命令行批量截图Node脚本示例代码

    这篇文章主要给大家介绍了关于命令行批量截图Node脚本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-01-01

最新评论