Dart 语言已支持健全的空安全机制!
当你选择使用空安全时,代码中的类型将默认是非空的,意味着 除非你声明它们可空,它们的值都不能为空。有了空安全,原本处于你的 运行时 的空值引用错误将变为 编辑时 的分析错误。
有了空安全,下面代码中所有的变量都是非空的:
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();
1.?
若你想让变量可以为 null,只需要在类型声明后加上 ?。
int? aNullableInt = null;
2.!
用强制非空操作符 (!) 将可空的类型转为非空 (V)。
return blockTypes[key]!;
3.[]
使用 [] 将一系列参数包裹起来作为位置参数:
String say(String from, String msg, [String? device]) {
var result = '$from says $msg';
if (device != null) {
result = '$result with a $device';
}
return result;
}
下面是不使用可选参数调用上述函数的示例
assert(say('Bob', 'Howdy') == 'Bob says Howdy');
下面是使用可选参数调用上述函数的示例:
assert(say('Bob', 'Howdy', 'smoke signal') ==
'Bob says Howdy with a smoke signal');
4.extension on
扩展方法
扩展方法是向现有库添加功能的一种方式。你可能已经在不知道它是扩展方法的情况下使用了它。例如,当您在 IDE 中使用代码完成功能时,它建议将扩展方法与常规方法一起使用。
extension NumberParsing on String {
int parseInt() {
return int.parse(this);
}
// ···
}
网友评论