Dans mon application basée sur Dart, je viens de remarquer que je peux omettre le new
mot - clé et que tout fonctionne parfaitement bien.
Au lieu de final widget = new Widget();
je peux aussi utiliser final widget = Widget();
.
Cela a-t-il un effet sur le code?
new
ouconst
sont encore nécessaires (je ne me souviens pas d'exemples ou de règles). Ils pourraient faire une autre tentative après Dart 2 pour le rendre facultatif partout.new
est nécessaire. Si vous ometteznew
un programme correct, il fonctionnera toujours de la même manière. Si vous supprimezconst
d'un programme de travail, dans la plupart des cas où vous devrez écrireconst
pour que le programme soit valide, il sera toujours valide. Chaque fois qu'il existe déjà unconst
entourage de l'expression, vous pouvez omettre le const imbriqué.Dans Dart 2, si vous invoquez un constructeur comme une fonction, sans a
new
ouconst
devant, alors cela équivaut à utilisernew
. Si vous voulez une invocation const, vous devez le mettreconst
devant.Dans une expression const, vous n'avez pas besoin d'écrire à
const
nouveau, et dans certains contextes qui nécessitent des expressions const (comme les expressions switch case et les initialiseurs de variables const), vous n'avez même pas besoin du const externe.Vous n'avez donc jamais besoin d'écrire
new
.L'équipe de langage Dart veut autoriser les expressions dans lesquelles vous pouvez insérer
new
ouconst
et avoir toujours l'invocation correcte (c'est-à-dire un constructeur const avec des arguments constants) à insérer par défaut auconst
lieu denew
, espérons-le dans une mise à jour précoce de Dart 2. Pour cette raison , Je recommande de l'écrirenew
devantObject()
, ou tout autre constructeur const où vous avez besoin que 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'insertionconst
est considérée comme une bonne idée).la source
Comme toutes les autres réponses l'indiquent, dans Dart 2, l'utilisation
new
est facultative. De plus, l' utilisationnew
est déconseillée par les directives de Effective Dart .la source
Le
new
mot-clé a été rendu 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 ( PAS OBLIGATOIRE ) en dehors d'une définition de mise en page, mais l'omettre dans les mises en page internes.Un autre point que je voudrais partager avec vous est que si vous utilisez
new
ou unconst
mot - clé lors de la déclaration de widgets , vous pouvez également voir l' 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 de widget restant dans le fichier de fléchettes tout en travaillant sur un autre code de widget dans le même fichier.la source
new
est déconseillé: son utilisation semble créer inconditionnellement une nouvelle instance alors que ce n'est pas le cas.