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#里面所有的变量,具体介绍以后的文章会讲