Lua学习日记一

来源:互联网 发布:淘宝直播怎么调清晰度 编辑:程序博客网 时间:2024/05/19 02:19

在lua中删除一个全局变量,只需要将变量赋值为nil

例:b = nil

因此,当且仅当一个变量不等于nil时,这个变量即存在!


在默认情况下,变量总是认为是全局的。全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局也不会出错,不过得到的结果是nil


Lua是动态类型语言,变量不要类型定义,只需要为变量赋值,值可以存储在变量中,作为参数传递或结果返回。Lua中有8个基本类型,分别为:nil,boolean,number,string,userdata,function,thread和table。

nil 属于该类,表示一个无效值(false)

boolean 包含2个值:false和true

number 表示双精度类型的浮点数

string 字符串由一对双引号或单引号来表示,也可以用2个方括号“[[ ]]”来表示“一块”字符串

function 由C或Lua编写的函数

userdate 表示任意存储在变量中的C数据结构

thread 表示执行的独立线路,用于执行协同程序

table 关联数组,数组的索引可以是数字或字符串,在Lua中,table的创建是通过“构造表达式”来完成,最简单的构造表达式是{ },用来创建一个空表,无法直接声明


number:double(双精度)类型(默认类型可以修饰luaconf.h里的定义)


在对一个数字字符串上进行算术操作时,Lua会 尝试将这个数字字符串转换成一个数字

例:print(" 2"+6)

out : 8

字符串连接使用的是 “ ..” ,如:

例:print("a" .. "b")

out : ab

print (123 .. 456)

out : 123456

使用#来计算字符串的长度,放在字符串前面

例:len = "www.baidu.com"

print (#len)

out  : 13


不同于其他语言的数组把0作为数组的初始索引,在Lua里表的默认初始索引一般以1开始。

table不会固定长度大小,有新数据添加时,table长度会自动增长,没初始化的table都是nil。


在异常情况下,可以返回一个nil以区别于其他正常的返回值


Lua中除nil和false以外都为真,0和空字符串也都是真

Lua中string可以将任意二进制数据存储到一个字符串中

Lua的字符串中是不可变的值。不能像在C语言中那样可以直接修改字符串中的某个字符,而是应该根据修改要求来创建一个新的字符串

Lua的字符串和其他Lua对象(例如table或函数等)一样,都是自动内存管理机制所管理的对象。这表示无需担心字符串的分配和释放,Lua处理这些事情。


如今,仍不能确定在Lua的设计中,这些自动的强制类型转换是否算是一项好的设计,建议最好不要依赖它们。虽然在某些地方这些强制转换显得很便利,但它们也给语言和使用它们的程序带来了负责性。毕竟,字符串和数字是两种不同的东西。比较运算10 == “10"总为false,因为10是一个数字,而“10”是一个字符串。如果需要显式地将一个字符串转换成数字,可以使用函数tonumber。当这个字符串的内容不能表示一个正确的数字时,tonumber将返回nil。若要将一个数字转换成字符串,可以调用函数tostring,或者将该数字与一个空字符串相连。

例:print (10 .. "" == "10")

out : true


table永远是“匿名的(anonymass)”,一个持有table的变量与table自身之间没有固定的关联性。当一个程序再也没有对一个table的引用时,Lua的垃圾收集器最终会删除该table,并复用它的内存。

原创粉丝点击