[前][次][番号順一覧][スレッド一覧][生データ]

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]