- 0X10 逻辑运算
- 0X11 更复杂的函数
- 0X12 字符串
- 变量是一个抽象概念。它是存储各种数据值的空间。在源码中,一个变量名就表示一个变量。
- Lua中的变量是无类型的(或者说动态类型的),一个变量可以存储各种各样的值。
- 值就是程序中要处理的数据。就像我们用阿拉伯数字符号记录数,在程序源码中我们用字符的组合表示一些值。这些字符组合称为字面值。例如:10,0xa这两个都是数字十的字面值。它们表示同一个数字,只是写法不同。
- 表示逻辑真假的关键字true和false也是字面值。用引号表示的字符串(如'helloworld','This is a sentence')也是字面值。
- 很明显,数值、逻辑值和字符串的字面值相差很大。事实上Lua中也确实把它们归为不同的类别。Lua中的变量虽然没有类别,但是值可以分为不同的类别。Lua中共有8种值类型:
- nil 空值
- boolean 逻辑值
- number 数字
- string 字符串
- function 函数
- userdata 用户数据
- thread 线程
- table 表
- nil类型只有一个值,也就叫nil。(nil也是一个关键字。)这个值就表示“什么都没有”。虽然0在数字值中,空字符串''在字符串值中,false在逻辑值中都表示类似的意思。但是nil是没有中的没有(有点拗口)。任何一个变量,如果没有被赋值过,就是nil值。而如果给一个变量赋予这个值,也就相当于删除这个变量。假设我们从没定义过ooxx这个变量,就直接用print(ooxx)输出它。会显示nil。
- 要想判断两个值是否是同一个值,或者判断两个变量存储的值是否相同。可以使用等于判断或不等于判断。在判断时首先会判断两个值的类型是否相同。如果类型不同则值必然不同。如果类型相同再进行进一步的判断:
nil~=false nil~='' 0~=false 5~='5' 5==0x5
- 预定义函数rawequal的作用和相等逻辑判断一样。它接受两个参数,当两个参数值相等的时候返回true。
rawequal('mmm','Mmm') rawequal('mmww','mm'..'ww')
- 有一个预定义函数type可以判断值或变量所存储值的类型。它接收一个参数,用字符串返回参数的值类型。试验以下命令:
type(nil) type(false) type('hello') x=65 type(x) type(55)==type(0x89) type(5)=='number'
- 0X15 类型转换