第一章 Scorpio-CSharp基础语法介绍 变量篇

彭宏义
2023-12-01

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

转载于:https://www.cnblogs.com/qingfeng346/p/5178441.html

 类似资料: