Lua有大小写之分,"and"是一个保留字,但"And"和"AND"却是两个不同的标识符
Lua行注释 --
Lua块注释 --[[ --]]
Lua有8种基础类型:nil(空)、boolean(布尔)、number(数字)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)和table(表)。含数type可根据一个值返回其类型名称。
print(type("Hello world")) -->string
print(type(10.4*3)) -->number
print(type(print)) -->function
print(type(true)) -->boolean
print(type(nil)) -->nil
print(type(type(x))) -->string
最后一行将永远返回"string",而无关乎X这个值的内容。这是因为type函数总是返回一个字符串。
变量没有预定义的类型,任何变量都可以包含任何类型的值:
print(type(a)) -->nil(a尚未初始化)
a = 10
print(type(a)) -->number
a = "a string!!"
print(type(a)) -->string
a = print -->是的,这是合法的!
a(type(a)) -->function
请注意最后两行。在Lua专用,函数是作为“第一类值(first-class value)”来看待的,可以像操作其他值一样来操作一个函数值。
将一个变量用于不同的类型,通常会导致混乱的代码,但有时明智地使用这种特性会带来便利。例如,在异常情况下,可以返回一个nil以区别于其他正常的返回值。
在Lua中,table既不是“值”也不是“变量”,而是“对象”。可以将一个table想象成一种动态分配的对象,程序仅持有一个对它们的引用(或指针),Lua不会暗中产生table的副本或创建新的table。此外,在Lua中也不需要声明一个table。事实上也没有办法可以声明table。table的闯将是通过“构造表达式(constructor expression)”完成的,最简单的构造表达式就是 {} 。
a = {} --创建一个table,并将它的引用存储到a
k = "x"
a[k] = 10 --新条目,key = "x", value = 10
a[20] = "great" --新条目,key = 20, value = "great"
print(a["x"]) -->10
k = 20
print(a[k]) -->"great"
a["x"] = a["x"] + 1 --递增条目"x"
print(a["x"]) -->11
table永远是“匿名的(anonymous)”,一个持有table的变量与table自身之间没有固定的关联性。
a = {}
a["x"] = 10
b = a -- b与a引用了同一个table
print(b["x"]) -->10
b["x"] = 20
print(a["x"]) -->20
a = nil -- 现在只有b还在引用table
a = nil --再也没有对table的引用了
当一个程序再也没有对一个table的引用时,Lua的垃圾收集器(garbage collector)最终会删除该table,并复用它的内存。
所有table都可以用不同类型的索引来访问value,当需要容纳新条目(entry)时,table会自动增长。
a.x = 10 --等同于a["x"] = 10
print(a.x) --等同于print(a["x"])
print(a.y) --等同于print(a["y"])
不要将a.x和a[x]搞错。前者表示a["x"],表示以字符串"x"来索引table。而后者是以变量x的值来索引table。下例说明了这种区别:
a = {}
x = "y"
a[x] = 10 --将10放入字段"y"
print(a[x]) -->10 --字段"y"的值
print(a.x) -->nil --字段"x"(未定义的)的值
print(a.y) -->10 --字段"y"的值
就Lua的习惯而言,数组通常以1作为索引的起始值,并且有不少机制依赖于这个惯例。
长度操作符"#"用于返回一个数组或线性表的最后一个索引值(或为其大小)。
以下是几种长度操作符在Lua中的习惯写法:
print(a[#a]) --打印列表a的最后一个值
a[#a] = nil --删除最后一个值
a[#a+1] = v --将v添加到列表末尾
a = {}
a[10000] = 1
print(table.maxn(a)) -->10000
lua如何让注释对齐 lua块注释
转载文章标签 lua如何让注释对齐 lua table constructor string 文章分类 游戏开发

-
Lua语法基础
Lua语法基础
lua 字符串 Lua -
ES版U
1.ES5和ES6的区别? 1)新增特性(网上的太多了,不过多赘述,后面做成单独版块) 2) 优化: &
ES版U es6 前端 javascript ES6