Вам нужно использовать ключевое слово "new" в Dart? - PullRequest
0 голосов
/ 30 апреля 2018

В моем приложении, основанном на Dart, я только что заметил, что могу опустить ключевое слово new, и все прекрасно работает.

Вместо final widget = new Widget(); Я также могу использовать final widget = Widget();.

Имеет ли это какое-либо влияние в коде?

Ответы [ 4 ]

0 голосов
/ 11 марта 2019

Как и во всех остальных ответах, в Dart 2 использование new необязательно. Кроме того, с использованием new не рекомендуется в соответствии с рекомендациями Effective Dart .

0 голосов
/ 30 апреля 2018

В Dart 2, если вы вызываете конструктор как функцию без new или const впереди, тогда это эквивалентно использованию new. Если вы хотите вызвать const, тогда вам нужно поставить const впереди.

Внутри константного выражения вам не нужно снова писать const, а в некоторых контекстах требуется константных выражений (таких как выражения переключателя и инициализаторы константных переменных). ), вам даже не нужен внешний констант.

Так что вам не нужно писать new.

Команда языка Dart хочет разрешить выражениям, в которых вы можете вставить либо new, либо const, и при этом иметь правильный вызов (т. Е. Конструктор const с постоянными аргументами), чтобы по умолчанию вставлять const вместо new, надеюсь, в раннем обновлении до Dart 2. По этой причине я рекомендую написать new перед Object() или любым другим const конструктором, где вам нужен объект, чтобы быть новым экземпляром. Это очень редкий случай, обычно вас не волнует идентичность вашего неизменяемого объекта (именно поэтому вставка const считается хорошей идеей).

0 голосов
/ 05 ноября 2018

Ключевое слово new стало необязательным в Dart 2. На данный момент вызов класса всегда будет возвращать новый экземпляр этого класса. Согласно моей рекомендации, вы можете использовать его ( НЕ ОБЯЗАТЕЛЬНО ) вне определения макета, но не указывать внутри макетов.

Еще один момент, которым я хотел бы поделиться с вами, ребята, это то, что если вы используете ключевое слово new или const при объявлении виджетов , вы также можете увидеть значок + , который вы можете использовать, чтобы свернуть и развернуть код тела виджета. Это полезно, когда вы хотите свернуть / скрыть остальной код виджета в файле дротика при работе с другим кодом виджета в том же файле.

0 голосов
/ 30 апреля 2018

Нет, это не так. С Dart 2 (нажмите для объявления с дополнительной информацией) new, а также const ключевые слова были сделаны необязательно .

Это означает, что new Widget() делает то же самое, что и Widget() самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...