また暫定公開です。
UNIX版:
http://kmaebashi.com/programmer/devlang/diksam_unix_20080825.tgz
Windows版:
http://kmaebashi.com/programmer/devlang/diksam_win_20080825.tgz
- ダウンキャストが付きました。
- C#風の例外処理機構が付きました。
ダウンキャストについては、こことかlangsmithとかでもご意見をいただき、結局「::」と「:>」でクラス名を囲む形で実現しました。ShapeをLineにダウンキャストする際は、
Line line = shape::Line:>;
と書くことになります。
例外処理は以下のように書きます。Diksamのスタックトレースは、Javaのように「Exceptionをnewした瞬間に詰まる」のではなく、C#風に「スタックトレースを戻りながら詰まる」という動作となります。throwし直すとスタックトレースが消えてしまうため、catchした例外を投げ直したい場合は単にthrow;と書きます。
try { … throw new HogeException(); } catch (HogeException ex) { throw; // 例外の投げ直し。 } finally { }
C#流と言っておいてアレですが、Java流の検査例外になっています。
ただし、まだ例外のクラス階層に対応していないので、ユーザが作った例外はすべてthrowsに並べるかcatchしなければなりません。
他にもいろいろ不備はあると思いますが、暫定公開します。