Covariant Script 结构和类

struct 结构名
    结构体
end

结构定义后结构名就可以作为类型名使用

结构体中的变量或函数称为结构体的成员。在结构体中只允许定义成员

可用class代替struct关键字编写程序,两者无实质区别



成员函数是一种特殊的函数,主要区别在于拥有一个隐式的this参数

this 指的是调用成员函数的结构实例本身。
比如a.test(),则 a 就是在 test 成员函数中 this 参数指向的对象



struct 结构名 extends 父类结构名
    结构体
end

派生结构将引入父类结构的所有成员并自动插入一个名为 parent 的成员

parent 成员是结构实例本身的父类实例

如果派生类想要重新实现父类函数,可使用 override 关键字覆写

function 函数名(参数列表(可选)) override
    语句块
end


function initialize()
    语句块
end

结构被构建时调用,无返回值(返回值无意义)


function duplicate(orig)
    语句块
end

结构被复制时调用,参数为被复制的实例,返回值无意义


function equal(orig)
    语句块
    return true
end

结构被比较时调用,参数为等号右边的实例,必须返回true(代表相等)或 false(代表不相等)


function finalize()
    语句块
end

结构被回收时调用,返回值无意义


function to_string()
    语句块
    return new string
end

结构被转换成字符串时调用,必须返回字符串