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();
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
Możesz napisać var a = new A(); int b = a; – SpiderPig
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