0 喜欢

Dart中??,??=,?.,...?运算符

admin
admin
2023-05-05 15:45:43 阅读 1681

??

空运算符,左侧不为null,则返回左侧,否则返回右侧

void main() { print(0 ?? 1); // <- 0 print(1 ?? null); // <- 1 print(null ?? null); // <- null print(null ?? null ?? 2); // <- 2 }

??=

空感知赋值运算符,当左侧未null时,则进行赋值

void main() { int value; print(value); // <- null value ??= 5; print(value); // <- 5, changed from null value ??= 6; print(value); // <- 5, no change }

?.

空感知访问运算符,此运算符通过尝试访问可能为null的对象属性或方法来防止您的应用程序崩溃

void main() { String value; // <- value is null print(value.toLowerCase()); // <- will crash print(value?.toLowerCase().toUpperCase()); // <- will crash print(value?.toLowerCase()?.toUpperCase()); // <- output is null }

…?

空感知扩展运算符,此运算符可防止您使用扩展运算符添加空元素(允许您将多个元素添加到集合中)

void main() { List<int> list = [1, 2, 3]; List<String> list2; // <- list2 is null print(['chocolate', ...?list2]); // <- [chocolate] print([0, ...?list2, ...list]); // <- [0, 1, 2, 3] print(['cake!', ...list2]); // <- will crash }

?

三元运算符

void main() { print(2 == 2 ? "a truth" : "a lie"); // <- a truth print(1 == 2 ? "a truth" : "a lie"); // <- a lie 5 == 6 ? doThis() : doThat(); // <- done that } void doThis() { print('done this'); } void doThat() { print('done that'); }

关于作者
admin
admin
admin@ifront.net
 获得点赞 173
 文章阅读量 215363
文章标签