[解決済み] Dartの「const」キーワードと「final」キーワードの違いは何ですか?
質問
とはどのような違いがあるのでしょうか?
const
と
final
というキーワードをDartで使うのですか?
どのように解決するのですか?
dartのサイトに投稿があり、かなりうまく説明されています。
最終的に
final"は、単一代入:最終的な変数またはフィールドを意味します。 は イニシャライザを持つ。一旦値が割り当てられたら、final変数の値は変更できません。 変数 .
コンスタントです。
<ブロッククオートDartでは、もう少し複雑で微妙な意味を持つconstがあります。 値 . const [1, 2, 3] のようにコレクションを作成するときや、const Point(2, 3) のようにオブジェクトを (new ではなく) 構築するときに使用できます。ここで、constとは、オブジェクトの深層部の状態をすべてコンパイル時に決定でき、オブジェクトがフリーズして完全にイミュータブルになることを意味します。
Constオブジェクトには、いくつかの興味深い性質と制約があります。
<ブロッククオートコンパイル時に計算可能なデータから作成する必要があります。constオブジェクトは、実行時に計算する必要があるものにはアクセスできません。1 + 2 は有効な const 式ですが、new DateTime.now() はそうではありません。
<ブロッククオートこれらは深く、推移的に不変である。コレクションを含む最終フィールドがある場合、そのコレクションはまだミュータブルである可能性があります。constコレクションがあれば、その中のすべてのコレクションは再帰的にconstでなければなりません。
<ブロッククオートそれらは 正規化 . これは、文字列のインターリングのようなもので、与えられた const 値に対して、1 つの const オブジェクトが作成され、const 式が何度評価されても再利用されます。
で、これはどういうことかというと
コンスタントです。
持っている値が実行時に計算される場合 (
new DateTime.now()
など)を使用すると
ない
はconstを使用します。しかし、コンパイル時に値が分かっている場合 (
const a = 1;
を使用する必要があります。
const
オーバー
final
. このほかにも
const
と
final
. まず、もしあなたが
const
として宣言する必要があります。
static const
ではなく、単に
const
. 次に、もしあなたが
const
コレクションを使用すると、その内部はすべて
const
. もしあなたが
final
コレクションを使用すると、その内部はすべて
ではない
final
.
ファイナル
final
を超えて使用する必要があります。
const
は、コンパイル時に値がわからず、実行時に計算/取得される場合です。HTTP レスポンスを変更できないようにしたい場合、データベースから何かを取得したい場合、 あるいはローカルファイルから読み込みたい場合は、次のようにします。
final
. コンパイル時に判明していないことは、すべて
final
オーバー
const
.
とは言うものの、どちらも
const
と
final
のフィールドは再割り当てできません。
final
オブジェクトは、それが
const
または
final
とは異なり、再割り当てが可能です。
const
).
関連
-
[解決済み] テンプレートにおける'typename'と'class'の違い?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] シンクロナイズド」とはどういう意味ですか?
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み] constexpr` と `const` の相違点
-
[解決済み] const "と "val "の違いは何ですか?
-
[解決済み】finalとeffectly finalの違いについて
-
[解決済み】char * constとconst char *の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] const "と "val "の違いは何ですか?
-
[解決済み] FlutterのColumnの子供の間のスペース
-
[解決済み] Flutter- wrapping text [duplicate] (フラッターテキストラッピング)。
-
[解決済み] Dartのasyncとasync*の違いは何ですか?
-
[解決済み] Flutterはすべてのルートを削除する
-
[解決済み] 段落内のテキストを太字にする(または書式設定する)にはどうしたらよいですか?
-
[解決済み] テキストフィールド(オートフォーカスがtrue)を持つボトムシートをキーボードで移動させるには?
-
[解決済み] Dartでタイムスタンプを取得するには?
-
[解決済み] リスト firstWhere Bad state: 要素なし
-
[解決済み] FlutterでAlertDialogを作るには?