阅读 86

Flutter Tips之 Unwrapping Multiple Optional in Flutter & Dart

接收到这样一个需求,就是英文名字中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> argss) {     print(getFullName(null, null));// Empty     print(getFullName('John', null));// Empty     print(getFullName(null, 'Deo'));// Empty      print(getFullName('John', 'Deo'));// John Deo } 复制代码

哈哈,这代码可拓展性一下子就上来了,而且特别像官方API。

今天增加了一个让别人看不懂代码的小思考。


作者:程序员界的小学生
链接:https://juejin.cn/post/7172039787447058468

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐