web-dev-qa-db-fra.com

Devez-vous utiliser le mot-clé "nouveau" dans Dart?

Dans mon application basée sur Dart, je viens de remarquer que je peux omettre le mot-clé new et que tout fonctionne parfaitement.

Au lieu de final widget = new Widget();, je peux également utiliser final widget = Widget();.

Est-ce que cela a un effet dans le code?

Non. Avec Dart 2 (cliquez pour l'annonce avec plus d'informations) les new et aussi const mots-clés ont été rendus optionnels .

Cela signifie que new Widget() fait exactement la même chose que Widget() seul.


Le mot clé const peut toutefois modifier une valeur qui ne serait pas implicitement un const en un const.
Vous devrez donc spécifier explicitement const lorsque vous en aurez besoin.

Dans Dart 2, si vous appelez un constructeur comme une fonction, sans new ou const, cela revient à utiliser new. Si vous voulez une invocation const, vous devriez alors mettre const devant.

À l'intérieur une expression constante, vous n'avez pas besoin d'écrire à nouveau const, et dans certains contextes, les expressions requis const (comme les expressions de casse de commutation et les initialiseurs de const variables), vous n'avez même pas besoin de la constante externe.

Donc, vous n'avez jamais besoin d'écrire new.

L'équipe de langage de fléchettes veut autoriser les expressions dans lesquelles vous pouvez insérer new ou const tout en conservant l'invocation correcte (c'est-à-dire un constructeur const avec des arguments constants) pour insérer par défaut const au lieu de new, espérons-le dans une mise à jour antérieure de Dart 2. Pour cette raison, je vous recommande d'écrire new devant Object(), ou tout autre - const constructeur où vous besoin l'objet soit une nouvelle instance. C'est un cas très rare, généralement vous ne vous souciez pas de l'identité de votre objet immuable (c'est pourquoi l'insertion de const est considérée comme une bonne idée).

12
lrn

Comme dans toutes les autres réponses, dans Dart 2, utiliser new est facultatif. De plus, l'utilisation de new est déconseillée par les directives de la fléchette effective .

4
jamesdlin

Le mot clé new est devenu facultatif dans Dart 2. À partir de maintenant, l'appel d'une classe renverra toujours une nouvelle instance de cette classe. Selon ma recommandation, vous pouvez l'utiliser (NON OBLIGATOIRE) en dehors d'une définition de disposition, mais omettre cette option.

Un autre point que j'aimerais partager avec vous est que si vous utilisez le mot clé new ou const lors de la déclaration de widgets, vous pourrez également voir le - + icône que vous pouvez utiliser pour réduire et développer le code du corps du widget. Ceci est utile lorsque vous souhaitez réduire/masquer le code du widget restant dans fichier Dart tout en travaillant sur un autre code de widget dans le même fichier.

3
Rahul Sharma