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).
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 .
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.