目录正文withAll函数测试一下正文 接收到这样一个需求,就是英文名字中firstName和lastName,其中任何一个为null,就返回Empty。 刚拿到需求,这不简单,i
接收到这样一个需求,就是英文名字中firstName和lastName,其中任何一个为null,就返回Empty。
刚拿到需求,这不简单,if判断不就可以了
if (firstName == null || lastName == null) {
return 'Empty';
}
return '$firstName $lastName';
确实,30秒搞定了。
自己想能不能再有更好一点的思路呢?可以更拓展一点的, 例如说三个字符串呢? 例如不是字符串,而是Object类型的呢?
于是就有了下面的代码
提供一个withAll函数,这个函数检查整个列表的空值,如果发现任何空值,回调将不会被调用,如果列表没有空值,回调将调用整个列表转换为非可选项列表T
T? withAll<T>(
List<T?> optionals,
T Function<List<T>> callback,
) => optionals.any((e) => e == null)
? null
: callback(optionals.cast<T>());
然后添加一个方法,调用withAll函数,为他提供可选值列表,只有当列表不包含任何空值的时候才会调用回调
String getFullName(
String? firstName,
String? lastName,
) => withAll([
firstName,
lastName,
], (names) => names.join(' ')) ?? 'Empty';
void main(List<String> args) {
print(getFullName(null, null));// Empty
print(getFullName('John', null));// Empty
print(getFullName(null, 'Deo'));// Empty
print(getFullName('John', 'Deo'));// John Deo
}
哈哈,这代码可拓展性一下子就上来了,而且特别像官方api。
今天增加了一个让别人看不懂代码的小思考。
以上就是Flutter基于dart Unwrapping Multiple Optional小技巧的详细内容,更多关于Flutter Dart Multiple Optional的资料请关注编程网其它相关文章!
--结束END--
本文标题: Flutter基于DartUnwrappingMultipleOptional小技巧
本文链接: https://www.lsjlt.com/news/174592.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0