私のDartベースのアプリケーションでは、newキーワードを省略でき、すべてが完全に正常に機能することに気づきました。
代わりにfinal widget = new Widget();も使用できますfinal widget = Widget();。
これはコードに影響がありますか?
私のDartベースのアプリケーションでは、newキーワードを省略でき、すべてが完全に正常に機能することに気づきました。
代わりにfinal widget = new Widget();も使用できますfinal widget = Widget();。
これはコードに影響がありますか?
回答:
いいえ、違います。ダート2(より多くの情報を発表するためにクリック)newしても、constキーワードが行われたオプション。
これは、それ自体がnew Widget()まったく同じことを行うことを意味しWidget()ます。
constキーワードは、しかし、ではないであろう値に変更することができますconst暗黙的にしますconst。
したがってconst、必要に応じて明示的に指定する必要があります。
new必要な場所はありません。new正しいプログラムを省略しても、常に同じように機能します。const動作中のプログラムから削除した場合、プログラムを有効にするために記述しなければならないほとんどの場合const、プログラムは引き続き有効です。const式がすでに囲まれている場合は、ネストされたconstを省略できます。
Dart 2では、関数のように、newまたはconst前にコンストラクタを呼び出さない場合、を使用するのと同じnewです。const呼び出しが必要な場合はconst、前に置く必要があります。
const式の内部では、const再度記述する必要はありません。const式を必要とする一部のコンテキスト(スイッチケース式やconst変数の初期化子など)では、外側のconstさえ必要ありません。
だから、書く必要はありませんnew。
ダートの言語のチームはあなたがどちらか挿入できる表現できるようにしたいnewかconst、まだ(であること、一定の引数付きのconstコンストラクタ)が挿入をデフォルトに呼び出しが正しい持ちをconstするのではなく、newうまくいけば、その理由ダート2への早期のアップデートでは、 、オブジェクトを新しいインスタンスにする必要がある場合newはObject()、やその他のconstコンストラクタの前に記述することをお勧めします。これは非常にまれなケースであり、通常は不変オブジェクトのIDを気にしません(そのため、挿入は良い考えと見なされます)。const
他のすべての回答が述べているように、ダート2では、使用newはオプションです。さらに、Effective Dartガイドラインでは使用new を推奨していません。
newキーワードは常に、そのクラスの新しいインスタンスを返しますクラスを呼び出して、今のダート2としてオプションになりました。私の推奨事項に従って、レイアウト定義の外ではそれを使用できます(必須ではありません)が、レイアウト内では省略できます。
皆さんと共有したいもう1つのポイントは、ウィジェットを宣言するときにnewまたはconstキーワードを使用すると、ウィジェットの本体コードを折りたたんだり展開したりするために使用できる+アイコンも表示できることです。これは、同じファイルの別のウィジェットコードで作業しているときに、dartファイルの残りのウィジェットコードを折りたたむ/非表示にする場合に便利です。
new推奨されない理由です。使用しない場合、無条件に新しいインスタンスが作成されるように見えます。
newかconstはまだ必要とされるが(私は例やルールを覚えていません)。彼らはダート2の後に別の場所でそれをオプションにしようとするかもしれません。