mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
47 lines
1.4 KiB
Text
47 lines
1.4 KiB
Text
class BaseClass1()
|
|
function BaseClass1( this, arg0, arg1 )
|
|
print( $"BaseClass1 arg0={arg0} arg1={arg1}" );
|
|
this.base1 := { this.base1 ?: {} ..., { arg0, arg1 } };
|
|
endfunction
|
|
endclass
|
|
|
|
class BaseClass2()
|
|
function BaseClass2( this, arg0 )
|
|
print( $"BaseClass2 arg0={arg0}" );
|
|
// this.base2 := arg0;
|
|
this.base2 := { this.base2 ?: {} ..., { arg0 } };
|
|
endfunction
|
|
endclass
|
|
|
|
class Foo( BaseClass1, BaseClass2 )
|
|
function Foo( this, arg0 )
|
|
// Will "expand" arguments in order
|
|
super( "unscoped-arg0", "unscoped-arg1", "unscoped-arg2" );
|
|
print( "---" );
|
|
|
|
// Can be scoped ...
|
|
super( BaseClass1::arg0:= "scoped-c1.arg0", BaseClass1::arg1:= "scoped-c1.arg1",
|
|
BaseClass2::arg0:= "scoped-c2.arg0" );
|
|
print( "---" );
|
|
|
|
// ... in any order, eg. putting Class2 first
|
|
super( BaseClass2::arg0:= "scoped-c2.arg0", BaseClass1::arg0:= "scoped-c1.arg0",
|
|
BaseClass1::arg1:= "scoped-c1.arg1" );
|
|
print( "---" );
|
|
|
|
// And do not need to scope uniquely-named arguments (arg1)
|
|
super( BaseClass2::arg0:= "scoped-c2.arg0", arg1 := "scoped-c1.arg1",
|
|
BaseClass1::arg0:= "scoped-c1.arg0" );
|
|
print( "---" );
|
|
|
|
this.child := arg0;
|
|
endfunction
|
|
endclass
|
|
|
|
var obj := Foo( "foo" );
|
|
|
|
// We'll see that obj.base1 always contains a value of *-arg0/1, and obj.base2
|
|
// will have "unscoped-arg2" and scoped arg0s
|
|
foreach key in obj
|
|
print( $"{_key_iter}={key}" );
|
|
endforeach
|