flutter - Dart - 值可以为 null 的表达式必须先进行 null 检查,然后才能取消引用
问题描述
这是我在初始化fun后添加的 Dart 代码?
但是,它仍然无法正常工作并抛出一个错误,提示“值可以为空的表达式必须先进行空检查,然后才能取消引用”
int add(int a, int b) => a + b;
Function? fun;
void main() {
fun = add;
var result = fun(20, 30);
print("Result is ${result}");
}
我如何对fun进行空值检查?
解决方案
您与空值进行比较,分析器推断成功检查变量不为空后:
void testFunction(Function? f) {
if (f != null) {
var result = f(20, 30);
print("Result is ${result}");
}
}
一个警告是它目前不适用于全局变量:
分析器无法对整个应用程序的流程进行建模,因此它无法预测全局变量或类字段的值。
见https://dart.dev/null-safety#using-variables-and-expressions
另请注意,没有可识别 null 的函数调用运算符,但您可以编写:
function?.call(arg1, arg2);
推荐阅读
- tensorflow - Keras 保存的模型在多个 GPU 上使用 Batch Normalization 返回与原始模型不同的结果(分布式训练)
- google-apps-script - Webapp - 你能分离出客户端js吗?
- python - Pygame 移动的星星
- laravel - 前端 laravel fortify 上未显示错误消息
- powerquery - PowerQuery 根据键列选择值
- c - 在 C 中使用 printf,如何打印包含乘法和余弦的方程?
- c# - c# 如果任何字符串与模式不匹配,如何执行操作?
- aws-lambda - 如何使用无服务器堆栈控制事件处理率
- java - Java:方法返回类
(在哪里 )。返回子类导致类型不匹配错误 - pytorch - 不要在 PyTorch 中包含梯度计算操作