В моем приложении на основе Dart я только что заметил, что могу опустить new
ключевое слово, и все работает отлично.
Вместо final widget = new Widget();
я тоже могу использовать final widget = Widget();
.
Это как-то влияет на код?
В моем приложении на основе Dart я только что заметил, что могу опустить new
ключевое слово, и все работает отлично.
Вместо final widget = new Widget();
я тоже могу использовать final widget = Widget();
.
Это как-то влияет на код?
Ответы:
Нет. С Dart 2 (нажмите для объявления с дополнительной информацией)new
, а также const
ключевыми словами были сделаны по желанию .
Это означает, что он new Widget()
делает то же самое, что и сам Widget()
по себе.
Однако const
ключевое слово может изменить значение, которое не было бы const
неявным, на const
.
Поэтому вам нужно будет явно указать, const
когда это необходимо.
new
требуется. Если вы пропустите new
правильную программу, она всегда будет работать одинаково. Если вы удалите const
рабочую программу, то в большинстве случаев, когда вам придется писать, const
чтобы программа была действительной, она все равно будет действительной. Каждый раз, когда const
выражение уже окружено, вы можете опустить вложенную const.
В Dart 2, если вы вызываете конструктор, например функцию, без символа new
или const
перед ним, это эквивалентно использованию new
. Если вам нужен вызов const, вы должны поставить его const
впереди.
Внутри константного выражения вам не нужно писать const
снова, а в некоторых контекстах, требующих константных выражений (например, выражения switch case и инициализаторы константных переменных), вам даже не нужна внешняя константа.
Так что вам никогда не нужно писать new
.
Команда разработчиков языка Dart хочет разрешить выражения, в которые вы можете вставить либо new
или, const
но при этом вызов будет правильным (то есть константный конструктор с постоянными аргументами) по умолчанию const
вместо вставки new
, надеюсь, в раннем обновлении Dart 2. По этой причине , Я рекомендую написать new
его перед Object()
любым другим конструктором const, где вам нужно, чтобы объект был новым экземпляром. Это очень редкий случай, обычно вы не заботитесь об идентичности вашего неизменяемого объекта (поэтому вставка const
считается хорошей идеей).
Как и во всех других ответах, в Dart 2 использование не new
является обязательным. Кроме того, использование new
не рекомендуется руководящими принципами «Эффективный дротик» .
new
Ключевое слово было сделано необязательным в Dart 2. В настоящее время, вызывая класс всегда возвращает новый экземпляр этого класса. По моей рекомендации, вы можете использовать его ( НЕ ОБЯЗАТЕЛЬНО ) вне определения макета, но не используйте его внутри макетов.
Еще один момент, которым я хотел бы поделиться с вами, ребята, заключается в том, что если вы используете ключевое слово new
или const
при объявлении виджетов , вы также можете увидеть значок +, который вы можете использовать для свертывания и развертывания кода тела виджета. Это полезно, когда вы хотите свернуть / скрыть остальной код виджета в файле dart во время работы над другим кодом виджета в том же файле.
new
это не рекомендуется: его использование выглядит так, как будто оно безоговорочно создает новый экземпляр, хотя это может не быть.
new
илиconst
они все еще необходимы (я не помню примеров или правил). Они могут предпринять еще одну попытку после Dart 2 сделать его повсюду необязательным.