Flutter學(xué)習(xí)(三)Dart符號(hào)
運(yùn)算符,優(yōu)先級(jí)從上到下

類成員變量定義:
1) int a; //編譯報(bào)錯(cuò),不加?修飾的變量不可為空,必須先初始化,或者用late修飾
2) int? a; //a是空或者整數(shù),使用時(shí)需要判空。不判空使用需要加!,否則編譯錯(cuò)誤,
例如if(a! > 0),此時(shí)如果a為空則拋錯(cuò),需要try catch處理,否則后面代碼不執(zhí)行
3) int a=0;//正確,可以重新賦值
4) late int a; //需要先賦值再使用,否則或拋錯(cuò)
5) final int a = 0; //final表示賦值一次,再次賦值會(huì)編譯報(bào)錯(cuò),
6) final int a;//必須在構(gòu)造函數(shù)中賦值,否則編譯報(bào)錯(cuò)
7) late final int a = 0;//懶加載定義方式,系統(tǒng)在使用該變量時(shí)才進(jìn)行賦值。late final修飾的變量可以使用this初始化,只有final修飾的變量不可使用this。再次賦值編譯報(bào)錯(cuò)
8) late final int a;//可以編譯通過,需要先賦值再使用,否則或拋錯(cuò)。賦值多次編譯不會(huì)報(bào)錯(cuò),但是運(yùn)行會(huì)報(bào)錯(cuò)。不推薦這種定義方式,請(qǐng)使用上一種方式來定義
函數(shù)變量定義:
函數(shù)中定義的變量可以直接用int a;處理和java差不多,使用時(shí)沒賦值,編譯器會(huì)提醒
運(yùn)算符
1) a??b? // 如果a不為空,返回a,否則返回b
2) a??=b? // 如果a為空,則賦值a=b,否則不處理
3) ?.? // 定義String? s;的情況,s?.length, 如果s為空,則返回空,否則返回s.length
4) !.?? // 定義String? s;的情況,s!.length, 如果s為空,則拋錯(cuò),否則返回s.length
5) factory 定義構(gòu)造函數(shù),可以返回一個(gè)已存在變量
6) mixin 定義一個(gè)混入類,class A extends B with C,C為混入類