D言語 私用メモ

現在の実装では下は末尾再帰の最適化が効かない。

class X{
	void f(int n){
		if(n==0)return;
		else return f(n-1);
	}
}

末尾再帰の最適化をしたい場合は

class X{
	final void f(int n){
		if(n==0)return;
		else return f(n-1);
	}
}

と書く。
前者は仮想関数になるから末尾再帰の最適化が出来ないのだろうか?


とりあえず末尾再帰を使うならfinal必須っと...