質問:最後の瞬間まであきらめないでください。エンディングが成功したかどうかにかかわらず、頑張って最善を尽くす限り、明確な良心があります。
この記事では、Dartの基本的な使用知識ポイントと、constキーワードとfinalキーワードの対比について説明します
** | あなたが必要があるかもしれません |
---|---|
CSDN | NetEase Cloud Classroomチュートリアル |
ナゲット | EDU Academyチュートリアル |
ほとんど知っている | Flutterシリーズの記事 |
見出しの同期 | Baidu Sync |
この記事は、最初にWeChatパブリックアカウント(biglead)で公開されました。私の大きなフロントエンドのキャリアであり、さまざまな技術フォーラムで同時に公開されました。
1 constおよびfinalの使用シナリオ
1.1最終
Finalは、変数を一度だけ割り当てるように変更するために使用され、実行時に割り当てられます。いわゆるランタイムとは、プログラムがこのコードを実行したときに、変更された最後の変数が割り当てられることを意味します。
アプリケーションシナリオ1を次の図に示します。finalをクラスで使用する
場合は、変数を宣言するときに初期化して値を割り当てる必要があります。finalをStatefulWidgetで使用する
場合は、変数を変更するために使用します。この場合、最終変更済み変数を使用して確認します最初の割り当てはないようですが、定義済みのStatefulWidgetが初期化されて使用された場合にのみ、最終的な変更された変数が割り当てられます。もちろん、一度だけ割り当てられるため、実行時の最終的な変更された変数の割り当ての理解に違反することはありません。
したがって、結論は次のとおりです。finalは変数の変更に使用でき、変更された変数は実行時に割り当てられ、一度だけ割り当てることができるため、変更された変数の内容は定数とも呼ばれます。
核となるアイデアは、実行時の割り当てで、1回だけ割り当てることができます。
1.2 constの使用シナリオ
constは、変数と定数コンストラクターを変更するために使用できます。変更された変数は、一度だけ割り当てることができます。
constで変更できる変数は、1回だけ割り当てることができます。constで変更された変数は、アプリケーションのライフサイクル全体を通じて不変の定数であり、メモリ内に1回だけ作成されます。以降の各呼び出しは再利用されます。初めて作成されたオブジェクト。
///全局常量 声明
const String name = "张三";
class TestPage2 {
///类常量 规范要求必须使用 static 修饰
static const String name = "张三";
void test(){
///方法块常量
const String name = "张三";
}
}
次のコードリスト1-2-1に示すように、constは定数コンストラクタを変更するために使用でき、列挙型を定義するためによく使用されます。
/// 代码清单 1-2-1
///订单类型
class OrderStatus {
static const OrderStatus notDeliver = const OrderStatus("待发货",1);
static const OrderStatus hasBeenShipped = const OrderStatus("已发货",2);
static const OrderStatus haveTheGoods = const OrderStatus("已收货",2);
const OrderStatus(this.statusName,this.statusNumber);
final String statusName;
final int statusNumber;
}
リスト1-2-2に示すように、次のコードを使用します。
/// 代码清单 1-2-2
class TestClass5{
///判断订单类型
void test(OrderStatus orderStatus){
switch (orderStatus) {
case OrderStatus.notDeliver:
break;
case OrderStatus.hasBeenShipped:
break;
case OrderStatus.haveTheGoods:
break;
default:
break;
}
}
}
2 finalとconstの違い
2.1最終変数とconst変更変数の値のタイミングが異なります
いわゆる値のタイミングは異なります。つまり、const変更変数はコンパイル時に決定される値であり、最終変更変数は実行時に決定されます。
const変更された変数には、コンパイル時とプログラムの実行前に特定の値があります。
constで変更された定数の値は、コンパイル時に計算できる結果でなければなりません。次の図に示すように、実行時に取得する必要がある値は変更できません。
2.2さまざまな応用分野
finalは変数の変更にのみ使用でき、
constキーワードは変数の変更に使用でき、定数コンストラクターの変更にも使用できます
2.3同じコンテンツに異なるオブジェクトを作成する
次のコードは2-3-1をリストしていますが、2つのオブジェクトlist1とlist2が作成されていますが、内容は同じで両方がconstオブジェクトであるため、同じオブジェクトをポイントしています。
/// 代码清单 2-3-1
///单元测试
test(" 测试1 ", () {
const List<int> list1 = [1, 2, 3];
const List<int> list2 = [1, 2, 3];
// 输出结果为true 比较的是指针指向
print(list1 == list2);
// 输出结果为true 比较指针指向同时也比较内容
print(identical(list1, list2));
});
次のコードリスト2-3-2に示すように、最終的に宣言された変数は、内容が同じであっても、新しいオブジェクトを再作成することです。
/// 代码清单 2-3-2
///单元测试
test(" 测试2 ", () {
final List<int> list1 = [1, 2, 3];
final List<int> list2 = [1, 2, 3];
// 输出结果为false 比较的是指针指向
print(list1 == list2);
// 输出结果为false 比较指针指向同时也比较内容
print(identical(list1, list2));
});