2013-06-05 11 views
5

Vorrei eseguire il cast delle istanze della mia classe personalizzata A su int. Qual è la sintassi dell'operatore di cast implicito? (Ho pensato mi sono ricordato che v'è una tale funzione, ma non riesco a trovare sul web)Qual è la sintassi per l'operatore di cast implicito nel dardo?

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

Credo che la sintassi è "no sintassi a tutti". In altre parole, lascia il '()' e "dovrebbe funzionare". Vedi http://news.dartlang.org/2012/05/types-and-casting-in-dart.html. Deve esserci un'ipotesi che un downcast sia possibile (e ha senso). Qual è la tua classe 'A'? – Floris

+0

Puoi scrivere var a = new A(); int b = a; – SpiderPig

+0

Conversione di tipo implicita difficile da implementare in script langauge. Ma la conversione esplicita può essere implementata molto facilmente. Correntemente in Dart non esiste un operatore di conversione esplicito in quanto tale. Quindi non puoi farlo in Dart 'var a = (int) new A()' perché l'operatore di conversione esplicita non è implementato in Dart. – mezoni

risposta

2

annotazioni di tipo non sono autorizzati a influenzare il comportamento a Dart. Se non si è in esecuzione in modalità controllata, allora questo:

int a = new A(); 

funzionerà lo stesso di questo:

var a = new A(); 

a run-time. In altre parole, quando non ci si trova in modalità selezionata, è possibile memorizzare A in una variabile annotata come int, ma non avviene alcuna conversione effettiva.

Se si sta eseguendo in modalità selezionata, il primo modulo fornirà un'eccezione di runtime.

non sono sicuro, ma io penso quello che stai chiedendo è un modo per definire una conversione tra la classe A e int che avverrà automaticamente quando "cast" a un int. Nessuna cosa del genere esiste, per quanto ne so. Dovresti semplicemente definire un metodo per farlo. Per esempio:

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

È inoltre possibile utilizzare as per raccontare gli strumenti "no, davvero, il trattamento di questo oggetto come questo tipo".

Un buon esempio di questo è quando si ha a che fare con la funzione dart: html querySelector().

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

In quanto sopra, l'oggetto restituito da querySelector('#sign-up') viene controllato che è proprio un esempio di FormElement.

Ulteriori informazioni presso https://www.dartlang.org/docs/dart-up-and-running/ch02.html#operators

Problemi correlati