1. 申请变量时加上 var 证明此变量的作用域为当前作用域,不加var的一律认为是全局变量
2. 预留全局变量
- _G 全局table,_G保存了所有全局变量
- _VERSION 脚本引擎版本号,暂时全部为master
- _SCRIPT 脚本引擎对象
3. 脚本内所有数据类型分别为 null bool number string function array table userdata,下面为各类型的申请
- null 类型
var a = null
- bool 类型
var a = true
var a = false
- number 类型
var a = 0
var a = 0.1
上述不加后缀的number类型申请脚本会默认保存成double类型
var a = 0L
如果在最后加上L类型声明变量为long类型
var a = 0xffff
如果是16进制数字会保存成long类型
- string 类型
var a = "hello world ' hello world"
var a = 'hello world " hello world'
申请string类型是 双引号和单引号都可以使用,使用双引号时 内部的单引号不转义,使用单引号时,内部的双引号不转义
var a = @"hello world
hello world"
string类型还可以使用@申请,加@的时候里面的符号都不转义,跟c#的@""用法一样,@符号双引号和单引号都可以使用
- function 类型
var a = function() { print("hello world") }
function hello() { print("hello world") }
跟其他脚本语言用法一样
- array 类型
var a = [100,200,300,400] //申请数组
print(a[0]) //获取数组
print(array.count(a)) //获取数组长度
a[10] = 5 //如果索引大于数组长度 数组长度会自动扩充
print(array.count(a))
print(a[20]) //获取数组索引大于数组长度 数组长度不会自动扩充
使用中括号声明array类型,相当于c#的List类型,取值时使用 a[0] ,索引从0开始,内部变量可以为任何变量
array类型的操作库请查看源码的 LibraryArray.cs 文件
- table 类型
a = {
1 = 200, //Key可以直接写数字
a = 100, //Key也可以写名字
//等同于 d = 300
"d" = 300, //或者字符串
//等同于 e = 300
'e' = 400,
func1 = function () {
//不能使用this 这种声明算静态函数
print(this)
print("b")
},
//可以使用this 算内部函数
function func2() {
print("this " + this.a)
}
}
//调用函数
a.func1()
a.func2()
//数字只能使用 [] 访问
print(a[1])
var c = "d"
//如果是变量可以使用 [] 访问
print(a[c])
使用大括号声明table类型,相当于c#的Dictionary类型
table类型的操作库请查看源码的 ScriptTable.cs 文件
- userdata 类型
userdata保存c#里面所有的变量,具体介绍以后的文章会讲