Lua基础类型

全局变量

	lua中全局变量不需要声明		
function funcA()
    a = 30
end
funcA()
print(a)

Lua中访问一个未初始化的变量不会引发错误,是一个特殊值nil,需要删除一个全局变量,将其值赋值nil就行.

类型与值

	8种基础类型:nil,boolean,number,string,userdata,function,thread,table
	使用 type 函数可以返回值的类型名称,type(type(X)) 返回一个string,与x值无关,
	而是 type 函数总是返回一个字符串。
  • nil
    无效值,将nil赋予一个变量相当于删除它。

  • boolean
    在Lua中任何值都可以表示一个条件。Lua将值falsenil视为“假”,空字符串也为“真”

  • number
    Lua所有数字不分整型和浮点型,number表示实数(双精度浮点数),可以表示任何 32 位整数。

  • string
    Lua的字符串通常表示“一个字符序列”,完全采用8位编码,Lua字符串中的字符可以具有任何数值编码,包括数值0。可以将任意二进制数据存储到一个字符串中。
    Lua的字符串是不可变的值,不能像在C语言中那样直接修改祖父穿的某个字符,而是应该根据修改要求来创建一个新的字符串。

a = "one string"
b = string.gsub( a,"one","another")

print(a)
print(b)

如果字符串本身包含引号,则需要转义 [ \ " ] 或者 [ ’ " ]
在这里插入图片描述
可以通过匹配的双方括号来界定一个字母字符串,就像写“块注释”一样。这种形式书写的字符串可以延申多行,Lua不会解释其中的转义序列。

page = [[
    <html>
        <head>
            <title>An Html Page</title>
        </head>
    </html>
]]
print(page)

这对于书写含有程序代码的字符串尤为有用。
Lua提供了运行时的数字与字符串的自动转换,在一个字符串上应用算数操作时,Lua会尝试将这个字符串转换成一个数字。如

print("10"+1) -- 结果为 11 
print("hello" + 1) --报错,hello无法转换
print("10 + 1") -- 10 + 1 
print(10 .. 20) -- 1020

字符串连接操作符是两个点,当在一个数字后面使用它的时候,必须用一个空格来分隔,不然,Lua会将第一个点理解为小数点。
tostring tonumber 可以对字符串和数字进行转换
#“可以放在字符串前来获取字符串长度

a = "helo"
print(#a) -- 4
  • table
    table类型实现了”关联数组“,一种具有特殊索引方式的数组。可以通过整数,字符串或其它类型的值(除了nil)来索引它。table没有固定大小,可以动态添加任意数量的元素到table中,table是Lua中主要的数据结构机制。可表示,数组,符号表,集合,记录,队列和其它数据结构。Lua也是通过table来表示模块,包,对象的。
    当输入 io.read 时,含义是 “io模块中的read函数”,对于Lua而言,这表示使用字符串"read"作为key来索引 table “io
    table不是值,也不是变量,而是"对象",可以将table想象成一种动态分配的对象,程序中仅持有一个对它的引用。
    table 永远是匿名的,一个持有table 的变量与table 自身之间没有固定的关联性。若有引用,置空就可以了。
a = {}
b = a
b = nil 

当一个程序再也没有一个对table的引用时,Lua的垃圾收集器会删除该table,并复用它的内存。
也可以使用 a.x 来索引 table 的值,两种形式是等价的
a.x 和 a[x]是不同的,前者表示 a[“x”],后者表示以变量x来索引table

x = 3
a = {}
a.x = 6
print(a.x) -- 6
print(a[x]) -- nil

数组通常以1为索引的起始值。 # 可以获取数组的长度
但是,由于数组实际上是一个table。索引它的大小概念可能有些模糊。如
a = { }
a[1000] = 1
它的大小算是多少呢?

a = {}
a[1] = 2
a[1000] = 1
print(#a)  -- 1

所有未初始化的元素的索引结果都是nil,Lua 将nil作为界定数组结尾的标志,上述例子在遍历到第二个元素就停止了。

  • function
    Lua中,函数是一类值,可以存储在变量中,可以用过参数传递给其它函数,还可以作为函数的返回值,Lua既可以调用自身Lua编写的函数,也可以调用C语言编写的函数,Lua所有的标准库都是用C语言写的。
  • userdata 和 thread
    userdata用于表示一种由应用程序或C语言库创建的新类型,例如I/O库就用userdata来表示文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值