Skip to content
Silica edited this page Mar 16, 2012 · 4 revisions

#Class ##Definition classname { int i = 1; int j = 2; func() { return i + j; } }

##Instance classname instance;

instance.i == 1;
instance.j == 2;
instance.func() == 3;

##Destructor if method named "destructor" exist
that execute automatically when instance deleted

class
{
	int i = 2;
	func(x)
	{
		i += x;
	}
	destructor()
	{
		print("i is " + i);
	}
}
class c;
c.func(4);

result: i is 6 ##クラスの動的生成 global class; class.i = 2; class.func = (x){i += x;}; class.destructor = (){print("i is " + i);}; class c; c.func(4);

これで上の例と全く同じ効果を持つ

##継承 そんないいものは無いが
動的生成や関数合成を駆使すればそれっぽいことは出来る

基底クラスをただコピーして、追加要素を加えている形

base
{
	int i = 1;
	func() print("method" + i);
}
derived = base;
derived.additionalmember = "default value";
derived.additionalmethod = (x){print(additionalmember + x);};
derived.func = (){print("over ride!" + additionalmember);};
derived instance;
instance.func(); // over ride!default value

拡張部分を別のクラスにしておいて合成する 多重継承の形に近い

base
{
	int i = 1;
	int j = 2;
	func() print(i+j);
}
extend
{
	int k = 3;
	int l = 4;
	func() print(i+j+k+l);
}
derived = base + extend;
derived c;
c.func(); // 10

合成部分に無名関数を利用する

derived = base + (){
	int k = 3;
	int l = 4;
	func() print(i+j+k+l);
};

尚、クラスの定義は静的だが、その他の操作は動的であることに注意

Clone this wiki locally