2013-06-05 9 views
5

カスタムクラスAのインスタンスをintにキャストしたいと思います。暗黙のキャスト演算子の構文は何ですか? (私は、このような機能があることを思い出したが、私はウェブ上でそれを見つけることができないと思った)dartの暗黙的なキャスト演算子の構文は何ですか?

int a = (new A()); 
+1

私は構文が「全く構文がない」と信じています。言い換えれば、 '()'を止めて、それはちょうどうまくいくはずです。 http://news.dartlang.org/2012/05/types-and-casting-in-dart.htmlを参照してください。ダウンキャストが可能である(そして意味をなされる)という前提があります。あなたのクラス「A」は何ですか? – Floris

+0

var a = new A();を書くことができます。 int b = a; – SpiderPig

+0

暗黙の型変換は、スクリプト言語では実装が難しい。しかし、明示的な変換は非常に簡単に実装できます。 Dartでは、明示的に変換演算子は存在しません。明示的な変換演算子はDartに実装されていないので、Dart 'var a =(int)new A()'ではこれを行うことはできません。 – mezoni

答えて

2

タイプの注釈がダートでの動作に影響することはできません。あなたがチェックモードで実行していない場合は、この:実行時に

var a = new A(); 

int a = new A(); 

は、このと同じように動作します。つまり、チェックモードでない場合は、と注釈された変数にAを格納することはできますが、実際の変換は行われません。

チェックモードで実行している場合は、最初のフォームでランタイム例外が発生します。

私はわからないんだけど、私はが何を求めていることintに「キャスト」するとき自動的に行われます、あなたのクラスAint間の変換を定義するための方法だと思い。私の知る限り、そのようなものは存在しません。これを行うメソッドを定義するだけですみます。たとえば:

int a = new A().to_i(); 
11

また、「いや、本当に、このオブジェクトは、このタイプとして扱う」ツールを伝える手助けするasを使用することができます。

これは、dart:htmlのquerySelector()機能に対処する必要がある場合の良い例です。上記で

FormElement form = querySelector('#sign-up') as FormElement; 

querySelector('#sign-up')によって返されたオブジェクトは、それが本当にFormElementのインスタンスであることを確認します。

詳細はこちらhttps://www.dartlang.org/docs/dart-up-and-running/ch02.html#operators

関連する問題