1.Lua脚本基本的数据类型:
- 1.数值(number) 相当于C/C++中的double
- 2.字符串(string) 可以包含任意字符(包括零),因此并不等价于C字符串,而是其超集.
- 3.布尔(boolean) 只有"true"和"false"两个值.(注意:逻辑运算符认为 false 和 nil 是假(false),其他为真,0 也是 true.)
- 4.函数(function) Lua的关键概念之一.不简单等同于C的函数或函数指针.
- 5.表(table) 异构的Hash表.Lua的关键概念之一.
- 6.userdata 用户(非脚本用户)定义的C数据结构.脚本用户只能使用它,不能定义.
- 7.线程(thread) Lua协作线程(coroutine),与一般操作系统的抢占式线程不一样.
- 8.nil 代表什么也没有,可以与C的NULL类比,但它不是空指针.
2.函数的应用:
foo = function() return x end
等价于 function foo() return x end
function func()
local a = 10
local b = 20
return a,b
end
lua中的函数可以返回多个值
local a, b = func()
print(a,b)
3. “.”和“:”的区别:
--声明一个table存储Box的属性:
local Box= {
width = 0,
height = 0,
}
--定义一个函数方法一:
function Box.FuncPrint(Box,x,y)
Box.width = x
Box.height = y
print(Box.width, Box.height)
end
--方法二:
function Box:FuncPrint(x, y)
Box.width = x
Box.height = y
print(Box.width, Box.height)
end
--调用方法一:
Box.FuncPrint(Box,12,15)
--调用方法二:
Box:FuncPrint(10,20)
当然,如果函数内部没有用到对象Box进行一些赋值,改变的操作。如:
function Box.FuncPrint(Box,x,y)
print(x, y)
end
Box.FuncPrint(Box,12,15)
第一个参数Box省略不写也是不会报错的。(需要注意的是:函数声明的时候,和函数调用的时候,对于第一个参数对象BOX尽量配套使用。避免不必要的麻烦。lua中用":"很好的解决了这个问题,Box:FuncPrint(x, y)默认传递了自己作为第一个参数。让我们可以很方便的进行偷懒了!)
总结:"." 和 ":"引用过程中,最直接的区别就是引用":"号的时候,默认传递了自身对象作为该函数的第一个参数。cocos2d-x+lua开发过程中,传递的相当class中的self,类似于C++中的this指针
借鉴博客:1.
数据基本类型
2.
“.”和“:”的区别