繁体   English   中英

Dart 默认可空参数

[英]Dart Default Nullable Parameters

我最近一直在将我的 Flutter/Dart 应用程序迁移为 null 安全兼容/声音。 为此,我遇到了一种我无法真正找到“最佳实践”的情况。

我有一些类似于以下的功能:

String defaultErrorMessage({String? message = 'Please try again later.'}) {
  return "Error. $message";
}

相当简单 - 只是为了标准化错误消息并为可能没有错误消息的情况提供默认消息。

问题是这样的:

参数“消息”不是必需的,具有默认值。 如果我将 null 字符串传递给它,它将简单地打印“Error.null” - 这显示在这个 dartpad

我应该为默认参数使用一种简单的方法或特殊的语法吗? 我认识到有一些简单的方法可以重写我觉得我不应该这样做 - 所有这些 null 功能/检查的重点不是自动执行这样的事情吗? 具体来说,我可以执行以下操作:

String defaultErrorMessage({String? message}) {
  message ??= 'Please try again later.';
  return "Error. $message";
}

但我更愿意在 function 定义本身中处理它。

预先感谢您的帮助!

所以基本上,你想让它,如果你传递一个 null 值,它使用你设置的默认消息? 很抱歉,您已经发布的代码可能是最好的。

但是,如果您希望 null 值与不传递值相同,为什么还要让变量可以为空呢? 做这样的事情不是更有意义吗?

String defaultErrorMessage({String message = 'Please try again later'}) {
  return "Error. $message";
}

如果有人做了这样的事情,这当然会给你一些编译错误:

defaultErrorMessage(message: null);

所以每次发生这种情况时你都必须 go 并将其更改为

defaultErrorMessage();

但是,这就是我一直以来 null 安全迁移的方式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM