2013-06-05 10 views
5

Chciałbym rzucić wystąpienia mojej niestandardowej klasy A do int. Jaka jest składnia niejawnego operatora obsady? (Myślałem, przypomniałem sobie, że istnieje taka funkcja, ale nie mogę go znaleźć w internecie)Jaka jest składnia dla niejawnego operatora obsady w rzutce?

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

Wierzę, że składnia jest „nie składnia w ogóle”. Innymi słowy - porzuć '()' i "powinno po prostu działać". Zobacz http://news.dartlang.org/2012/05/types-and-casting-in-dart.html. Musi istnieć założenie, że downcast jest możliwy (i ma sens). Jaka jest twoja klasa "A"? – Floris

+0

Możesz napisać var ​​a = new A(); int b = a; – SpiderPig

+0

Konwersja typu niejawnego trudna do implementacji w języku skryptowym langauge. Ale wyraźna konwersja może być wdrożona bardzo łatwo. Aktualnie w Dart nie istnieje jawny operator konwersji jako taki. Więc nie możesz tego zrobić w Dart 'var a = (int) new A()' ponieważ operator konwersji jawnej nie został zaimplementowany w Dart. – mezoni

Odpowiedz

2

Rodzaj adnotacje nie mogą wpływać na zachowanie w Dart. Jeśli nie działa w trybie sprawdzane, to:

int a = new A(); 

będzie działać tak samo jak ten:

var a = new A(); 

w czasie wykonywania. Innymi słowy, gdy nie jesteś w trybie sprawdzania, możesz zapisać swoją A w zmiennej opisanej jako int, ale nie ma faktycznej konwersji.

Jeśli uruchomiony jest tryb sprawdzania, pierwszy formularz spowoduje wyjątek środowiska wykonawczego.

Nie jestem pewien, ale myślęco pytasz o to sposób zdefiniować konwersję pomiędzy klasa A i int że nastąpi automatycznie, gdy „cast” do int. Nic takiego nie istnieje, według mojej wiedzy. Powinieneś po prostu zdefiniować metodę, aby to zrobić. Na przykład:

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

Można również wykorzystać as pomóc powiedzieć narzędzia „no, naprawdę, jak traktować ten obiekt tego typu”.

Dobrym tego przykładem jest sytuacja, gdy mamy do czynienia z funkcją dart: html o nazwie querySelector().

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

powyżej, obiekt zwrócony przez querySelector('#sign-up') jest zaznaczone, że jest to naprawdę instancją FormElement.

Dowiedz się więcej na https://www.dartlang.org/docs/dart-up-and-running/ch02.html#operators

Powiązane problemy