langsmith:373
From: Kota Mizushima <hau51010 tree.odn.ne.jp>
Date: Fri, 06 Jun 2008 14:42:38 +0900
Subject: [langsmith:373] Re: interfaceのディスパッチとダウンキャストについて
水島です。 Kazuya Maebashi さんは書きました: > (2)ダウンキャストについて > CやJavaだとキャストの演算子は前置なので、 > > hoge.value = ((Hoge)piyo[i].fuga.foo[j].bar).value; > > のような式を書くとき、左から右に読み進めていってから、 > いきなり左に戻らなければなりません。 > これでは読みにくいので後置のキャスト演算子を導入しようと > 思うのですが、独自文法とするより、先例があるようなら > できるだけそれに合わせたいと思います。 > C/Java風の文法で、型のキャストが後置になっている言語って > あるものでしょうか。 既に挙げられているC#以外だと、Scala,Nemerleなどがあります。 Scala: http://www.scala-lang.org/index.html では、asInstanceOfというコンパイラに特別扱いされるメソッドが継承階層 のルートに定義されていて、exp.asInstanceOf[型名]という形でキャスト できます。 Nemerle: http://nemerle.org/ では、>:演算子というのがあって、 exp >: 型名 とという形でキャストできます。 あと、これは余談ですが、拙作のOnion言語(^^;では、 exp $ 型名 とすることで、キャストできるようになっています。 いずれの場合も、C#のas演算子と違って、キャストに失敗した場合は実行時 例外が発生します -- 水島宏太 e-mail: hau51010 tree.odn.ne.jp -- ML: langsmith quickml.atdot.net Info: http://www.atdot.net/~ko1/quickml/
370 2008-06-06 02:51 [PXU00211 nifty.ne.jp] interfaceのディスパッチとダウンキャストについて 371 2008-06-06 06:37 ┣[shugo ruby-lang.org ] 374 2008-06-07 02:41 ┃┗[PXU00211 nifty.ne.jp] 372 2008-06-06 11:28 ┣[randy mvd.biglobe.ne] 375 2008-06-07 02:51 ┃┗[PXU00211 nifty.ne.jp] 377 2008-06-07 16:03 ┃ ┗[randy mvd.biglobe.ne] -> 373 2008-06-06 14:42 ┣[hau51010 tree.odn.ne] 376 2008-06-07 04:03 ┃┗[PXU00211 nifty.ne.jp] 378 2008-06-08 18:48 ┗[maeda-langsmith atus] 379 2008-06-09 00:24 ┗[PXU00211 nifty.ne.jp]