Dart 默认可空参数
Dart Default Nullable Parameters
我最近一直在将我的 Flutter/Dart 应用迁移到空安全 compatible/sound。为此,我遇到了一种情况,我真的无法弄清楚 'best practice' 的情况。
我有几个类似下面的功能:
String defaultErrorMessage({String? message = 'Please try again later.'}) {
return "Error. $message";
}
相当简单 - 只是为了标准化错误消息并为可能没有错误消息的情况提供默认消息。
问题是这样的:
参数'message'不是必需的,有一个默认值。如果我向它传递一个空字符串,它只会打印“Error.null”——这在 this dartpad
中显示
有没有我应该为默认参数使用的简单方法或特殊语法?我知道有一些简单的方法可以重写这个我觉得我不应该这样做 - 所有这些 null features/checks 的目的不就是自动做这样的事情吗?具体来说,我可以执行以下操作:
String defaultErrorMessage({String? message}) {
message ??= 'Please try again later.';
return "Error. $message";
}
但我更愿意在函数定义本身中处理它。
提前感谢您的帮助!
所以,基本上,您想让它在传递空值时使用您设置的默认消息吗?很抱歉,您已经发布的代码可能是最好的。
但是,如果您希望空值与不传递值相同,为什么还要让变量完全可以为空呢?这样做不是更有意义吗?
String defaultErrorMessage({String message = 'Please try again later'}) {
return "Error. $message";
}
如果有人这样做,这当然会给你一些编译错误:
defaultErrorMessage(message: null);
所以每次发生这种情况你都得去把它改成
defaultErrorMessage();
但是,这就是空安全迁移对我来说一直以来的方式
我最近一直在将我的 Flutter/Dart 应用迁移到空安全 compatible/sound。为此,我遇到了一种情况,我真的无法弄清楚 'best practice' 的情况。
我有几个类似下面的功能:
String defaultErrorMessage({String? message = 'Please try again later.'}) {
return "Error. $message";
}
相当简单 - 只是为了标准化错误消息并为可能没有错误消息的情况提供默认消息。
问题是这样的:
参数'message'不是必需的,有一个默认值。如果我向它传递一个空字符串,它只会打印“Error.null”——这在 this dartpad
中显示有没有我应该为默认参数使用的简单方法或特殊语法?我知道有一些简单的方法可以重写这个我觉得我不应该这样做 - 所有这些 null features/checks 的目的不就是自动做这样的事情吗?具体来说,我可以执行以下操作:
String defaultErrorMessage({String? message}) {
message ??= 'Please try again later.';
return "Error. $message";
}
但我更愿意在函数定义本身中处理它。
提前感谢您的帮助!
所以,基本上,您想让它在传递空值时使用您设置的默认消息吗?很抱歉,您已经发布的代码可能是最好的。
但是,如果您希望空值与不传递值相同,为什么还要让变量完全可以为空呢?这样做不是更有意义吗?
String defaultErrorMessage({String message = 'Please try again later'}) {
return "Error. $message";
}
如果有人这样做,这当然会给你一些编译错误:
defaultErrorMessage(message: null);
所以每次发生这种情况你都得去把它改成
defaultErrorMessage();
但是,这就是空安全迁移对我来说一直以来的方式