第2章 值和类型
nil
一个全局变量没有被赋值以前默认值为nil;给全局变量负nil可以删除该变量
Booleans
两个取值false和true.
注:在控制结构的条件中除了false和nil为假,其他值都为真。所以Lua认为0和空串都是真。
Numbers
表示实数
Strings
Lua中字符串是不可以修改的,可以创建一个新的变量存放你要的字符串
a = "one string"
b = string.gsub(a, "one", "another") -- change string parts
print(a) --> one string
print(b) --> another string
可以使用单引号或者双引号表示字符串
a = "a line"
b = 'another line'
还可以在字符串中使用\ddd(ddd为三位十进制数字)方式表示字母。
"alo\n123\""和'\97lo\10\04923"'是相同的。
运行时,Lua会自动在string和numbers之间自动进行类型转换,当一个字符串使用算术操作符时,string就会被转成数字。
print("10" + 1) --> 11
print("10 + 1") --> 10 + 1
print("-5.3e - 10" * "2") --> -1.06e-09
print("hello" + 1) -- ERROR (cannot convert "hello")
print(10 .. 20) --> 1020
字符串和数字相互转换
print(tostring(10) == "10") --> true
print(10 .. "" == "10") --> true
print(10 == tonumber(10)) --> true
Functions
原文:函数是第一类值(和其他变量相同),意味着函数可以存储在变量中,可以作为函数的参数,也可以作为函数的返回值。这个特性给了语言很大的灵活性:一个程序可以重新定义函数增加新的功能或者为了避免运行不可靠代码创建安全运行环境而隐藏函数,此外这特性在Lua实现面向对象中也起了重要作用(在第16章详细讲述)。
Lua可以调用lua或者C实现的函数,Lua所有标准库都是用C实现的。标准库包括string库、table库、I/O库、OS库、算术库、debug库。
Userdata and Threads
原文:userdata可以将C数据存放在Lua变量中,userdata在Lua中除了赋值和相等比较外没有预定义的操作。userdata用来描述应用程序或者使用C实现的库创建的新类型。例如:用标准I/O库来描述文件。下面在C API章节中我们将详细讨论。
在第九章讨论协同操作的时候,我们介绍线程。
第3章 表达式
算数运算符
二元:+-*/^(加减乘除幂)
一元:-(负值)
操作数都是实数
关系运算符
< > <= >= == ~=
逻辑运算符
and or not
逻辑运算符认为false和nil是假(false),其他为真,0也是true.
a and b -- 如果a为false,则返回a,否则返回b