Diksam暫定公開2008/08/25版

また暫定公開です。

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しなければなりません。

他にもいろいろ不備はあると思いますが、暫定公開します。