2013-06-05 3 views
5

Я хотел бы указать экземпляры моего пользовательского класса A в int. Каков синтаксис неявного оператора трансляции? (Я думал, что я вспомнил, что есть такая возможность, но я не могу найти его в Интернете)Каков синтаксис для неявного оператора литья в дротике?

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

Неявное преобразование типов трудно реализовать в скрипте langauge. Но явное преобразование может быть реализовано очень просто. Ударно в Дарт не существует явного оператора преобразования как такового. Поэтому вы не можете сделать это в Dart 'var a = (int) new A()', потому что явный оператор преобразования не реализован в Dart. – mezoni

ответ

2

Тип аннотации не могут влиять на поведение в Dart. Если вы не работаете в зарегистрированном режиме, то это:

int a = new A(); 

будет работать так же, как это:

var a = new A(); 

во время выполнения. Другими словами, если вы не в установленном режиме, вы можете сохранить свой A в переменной, аннотированной как int, но фактическое преобразование не происходит.

Если вы работаете в проверенном режиме, первая форма даст вам исключение во время выполнения.

Я не уверен, но я думаю, , что вы просите за это способ определить преобразование между ваш класс A и int, что будет происходить автоматически, когда «слепок» на int. Насколько мне известно, такого не существует. Вы должны просто определить способ для этого. Например:

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

Вы также можете использовать as, чтобы помочь рассказать инструменты «нет, на самом деле, рассматривать этот объект как этого типа».

Хорошим примером является то, когда вам нужно иметь дело с дротиком: html's querySelector() функция.

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

В выше, объект, возвращаемый querySelector('#sign-up') проверяется, что это на самом деле является экземпляром FormElement.

Узнайте больше на https://www.dartlang.org/docs/dart-up-and-running/ch02.html#operators

Смежные вопросы