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") }
跟其他脚本语言用法一样
- array 类型
var a = [100,200,300, "123", "456"]
使用中括号声明array类型,相当于c#的List类型,取值时使用 a[0] ,索引从0开始,内部变量可以为任何变量
array类型的操作库请查看源码的 LibraryArray.cs 文件
- table 类型
var a = { 1 = 200, //申请时可以直接用 数字当Key a = 100, //也可是使用变量名 当 Key b = function () { //这样申请不能使用this变量,相当于静态函数 print(this == null) print("b") }, function c() { //这样申请可以使用this变量,相当于内部函数 print("this " + this.a) print("self " + self.a) } //等同于 d = 300 "d" = 300, //等同于 e = 300 ‘e‘ = 400, } a.b() a.c() //数字只能使用 [] 访问 print(a[1]) //字母变量可以使用 . 访问, 也可以使用 [] 访问 print(a.d) a.d = 400 print(a.d) a["d"] = 500 print(a.d)
使用大括号声明table类型,相当于c#的Dictionary类型
table类型的操作库请查看源码的 ScriptTable.cs 文件
- userdata 类型
userdata保存c#里面所有的变量,具体介绍以后的文章会讲