2013-06-05 12 views
5

Ich möchte Instanzen meiner benutzerdefinierten Klasse A int int. Wie lautet die Syntax des impliziten Darstellungsoperators? (Ich dachte, ich erinnerte mich, dass es eine solche Funktion ist, aber ich kann es nicht im Internet finden)Wie lautet die Syntax für den impliziten Darsteller in Dart?

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

glaube ich, die Syntax ist "keine Syntax überhaupt". Mit anderen Worten - lassen Sie das '()' weg und es sollte "einfach funktionieren". Siehe http://news.dartlang.org/2012/05/types-and-casting-in-dart.html. Es muss davon ausgegangen werden, dass ein Downcast möglich ist (und Sinn macht). Was ist deine Klasse "A"? – Floris

+0

Sie können schreiben var a = new A(); int b = a; – SpiderPig

+0

Implizite Typkonvertierung in Skriptsprache schwer zu implementieren. Die explizite Konvertierung kann jedoch sehr einfach implementiert werden. Derzeit existiert in Dart kein expliziter Konvertierungsoperator als solcher. Sie können dies nicht in Dart 'var a = (int) new A()' tun, da der explizite Konvertierungsoperator nicht in Dart implementiert ist. – mezoni

Antwort

2

Typ Anmerkungen werden nicht Verhalten in Dart beeinflussen erlaubt. Wenn Sie sich nicht im aufgegebenen Modus ausgeführt wird, dann das:

int a = new A(); 

das gleiche wie das funktioniert:

var a = new A(); 

zur Laufzeit. Mit anderen Worten, wenn Sie sich nicht im aktivierten Modus befinden, können Sie Ihre A gerne in einer Variablen speichern, die als int gekennzeichnet ist. Es findet jedoch keine tatsächliche Konvertierung statt.

Wenn Sie im aktivierten Modus arbeiten, gibt das erste Formular eine Laufzeitausnahme.

Ich bin nicht sicher, aber ich denke, , was Sie fordern für eine Art und Weise ist eine Konvertierung zwischen Ihrer Klasse A und int zu definieren, die automatisch, wenn „cast“ zu einem int passieren wird. So etwas existiert meines Wissens nicht. Sie sollten dazu einfach eine Methode definieren. Zum Beispiel:

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

Sie auch as zu helfen, sagen den Werkzeugen „Nein, wirklich, behandeln dieses Objekt als diese Art“ verwenden können.

Ein gutes Beispiel dafür ist, wenn Sie mit dart: html querySelector() Funktion zu tun haben.

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

In dem obigen wird das Objekt zurückgegeben von querySelector('#sign-up') vergewissert, dass sie wirklich eine Instanz von FormElement ist.

Erfahren Sie mehr unter https://www.dartlang.org/docs/dart-up-and-running/ch02.html#operators

Verwandte Themen