Lua学习笔记之表达式

 更新时间:2015年04月10日 11:12:34   投稿:hebedich  
在Lua中,表达式包括:数值常量、字符串字面值、变量、单目和双目运算符,函数调用,也包括一些非传统的函数定义和表结构。今天我们就来详细了解下lua中的表达式

前言

这里总结的内容和其它语言的基本类似,所以这里就只是基本的进行总结。不做详细的讲解。

算术操作符

Lua支持常规的算术操作符有:”+”(加法),”-”(减法),”*”(乘法),”/”(除法),”^”(指数),”%”(取模),一元的”-”(负号)。所有的这些操作符都用于实数。例如:x^0.5将计算x的平方根,x^3将计算x的3次方。

关系操作符

Lua提供的关系操作符有:”<”,”>”,”<=”,”>=”,”==”,”~=”;所有这些操作符的运算结果都是true或false。

操作符==用于相等性测试,操作符~=用于不等性测试。这两个操作符可以应用于任意两个值。如果两个值具有不同的类型,Lua就认为它们是不相等的;特别需要说明的是,nil只与其自身相等。

对于table、userdata和函数,Lua是作引用比较的。也就是说,只有当它们引用同一个对象时,才认为它们相等。

逻辑操作符

Lua提供的逻辑操作符有and、or和not。与条件控制语句一样,所有的逻辑操作符将false和nil视为假,而将其它的任何东西视为真。对于操作符and来说,如果它的第一个操作数为假,就返回第一个操作数;不然就返回第二个操作数。对于操作符or来说,如果它的第一个操作数为真,就返回第一个操作数;不然就返回第二个操作数。这里和C++等语言是存在区别的,Lua的逻辑操作符并不是简单的返回true或false,而是返回操作数的值。例如以下代码:

复制代码 代码如下:

print(4 and 5)               -->5
print(nil and 13)          -->nil
print(false and 13)     -->false
print(4 or 5)               -->4
print(false or 5)          -->5

and和or都使用“短路求值”,也就是说,它们只会在需要时才去评估第二个操作数。

字符串连接

要在Lua中连接两个字符串,可以使用操作符“..”(两个点)。如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串。在Lua中,字符串是不可变的值,连接操作符只会创建一个新字符串,而不会对其原操作数进行任何修改。

table构造式

构造式是用于创建和初始化table的表达式。最简单的构造式就是一个空构造式{},用于创建一个空table。构造式还可以用于初始化数组,数组的下标从1开始。例如:

local tbDays ={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
print(tbDays[1])     -->Sunday
print(tbDays[2])     -->Monday
print(tbDays[3])     -->Tuesday
print(tbDays[4])     -->Wednesday
print(tbDays[5])     -->Thursday
print(tbDays[6])     -->Friday
print(tbDays[7])     -->Saturday

Lua还提供了一种特殊的语法用于初始化table:

复制代码 代码如下:

local tb1 = {x=10, y=20}
print(tb1.x)          -->10
print(tb1["x"])          -->10

除此之外,Lua还提供了一种更通用的格式,这种格式允许在方括号之间,显式地用一个表达式来初始化索引值,例如:

复制代码 代码如下:

local tb1 = {["+"] = "add", ["-"] = "sub", ["*"] = "mul", ["/"] = "div"}
print(tb1["+"])

比如local tb1 = {x=10, y=20}这种构造方式,其实是和local tb1 = {["x"] = 10, ["y"] = 20}是等价的。在实际编程中,这两种构造式,都可以替换的用。

总结

纯粹的学习笔记,没有什么可以多说的了。希望对大家学习Lua有用。

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • Lua中调用C语言函数实例

    Lua中调用C语言函数实例

    这篇文章主要介绍了Lua中调用C语言函数实例,本文先讲解了相关知识,然后给出了调用实例,需要的朋友可以参考下
    2015-04-04
  • 详解Lua中if ... else语句的使用方法

    详解Lua中if ... else语句的使用方法

    这篇文章主要介绍了详解Lua中if ... else语句的使用方法,是Lua入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Lua一维数组与多维数组的使用示例

    Lua一维数组与多维数组的使用示例

    今天小编就为大家分享一篇关于Lua一维数组与多维数组的使用示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Lua的内存管理浅析

    Lua的内存管理浅析

    这篇文章主要介绍了Lua的内存管理浅析,本文讲解了内存管理的相关知识,同时讲解了垃圾收集器的机制,需要的朋友可以参考下
    2014-09-09
  • Lua和C++的通信流程分解

    Lua和C++的通信流程分解

    这篇文章主要介绍了Lua和C++的通信流程分解,本文用一张图讲解了Lua和C++之间的通信流程,并对每一步做了分解,需要的朋友可以参考下
    2014-09-09
  • lua 如何获取指定路径下的所有文件夹

    lua 如何获取指定路径下的所有文件夹

    Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能,这篇文章主要介绍了lua 获取指定路径下的所有文件夹,需要的朋友可以参考下
    2024-03-03
  • Lua 极简入门指南(七):面向对象编程

    Lua 极简入门指南(七):面向对象编程

    这篇文章主要介绍了Lua 极简入门指南(七):面向对象编程,本文讲解了类和继承的概念,并给出了编程实例,需要的朋友可以参考下
    2014-11-11
  • Lua中实现php的strpos()以及strrpos()函数

    Lua中实现php的strpos()以及strrpos()函数

    这篇文章主要介绍了在Lua中实现php的strpos()以及strrpos()函数的方法,需要的朋友可以参考下
    2014-11-11
  • 编写高性能Lua代码的方法

    编写高性能Lua代码的方法

    这篇文章主要介绍了编写高性能Lua代码的方法,本文是基于Lua语言的创造者Roberto Ierusalimschy的一篇文章翻译改写而来,需要的朋友可以参考下
    2014-10-10
  • Lua模拟面向对象示例分享

    Lua模拟面向对象示例分享

    本文这里主要给大家分享的是一则使用Lua模拟面向对象的方法的示例代码,大家学习下思路,希望对大家能够有所帮助。
    2015-03-03

最新评论