this
语法
- this
描述
this 表达式用于获取当前对象的实例。
this 表达式的类型是 object,其可以被理解为成员函数的一个特殊参数,当调用一个对象的成员函数时,在目标函数作用域内,
可以通过 this 访问当前对象实例。
调用脚本中的类型拓展函数 或 调用 class_map 的方法时,this 表达式的值始终是对应的静态对象实例:
#pragma parallel
#pragma default_object
public void array.disp(array self)
{
writeln(this); // this 始终获得静态对象实例
}
class Example
{
void foo(Example self)
{
writeln(this); // this 始终获得静态对象实例
}
}
由于 this 表达式没有明确的对象类型信息,因此可以用于推迟一部分类型检查到运行时,实现动态派发调用:
// Base.gs
public void foo()
{
this.?bar(); // 动态派发调用,如果对象组合了 Base 之后实现了 bar 函数,此处可以完成调用
}
// Instance.gs
public void bar()
{
// ...
}
在上述示例中,this.?bar() 调用的是 this 当前所指向的对象实例的 bar 方法,如果 this 指向的对象没有
bar 方法,则调用失败,函数调用表达式的值为 nil。