最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter基于Dart Unwrapping Multiple Optional小技巧

 更新時(shí)間:2022年12月08日 15:34:12   作者:程序員界的小學(xué)生  
這篇文章主要為大家介紹了Flutter Unwrapping Multiple Optional打開多個(gè)選項(xiàng)小技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

接收到這樣一個(gè)需求,就是英文名字中firstName和lastName,其中任何一個(gè)為null,就返回Empty。

剛拿到需求,這不簡單,if判斷不就可以了

if (firstName == null || lastName == null) {
    return 'Empty';
} 
return '$firstName $lastName';

確實(shí),30秒搞定了。

withAll函數(shù)

自己想能不能再有更好一點(diǎn)的思路呢?可以更拓展一點(diǎn)的, 例如說三個(gè)字符串呢? 例如不是字符串,而是Object類型的呢?

于是就有了下面的代碼

提供一個(gè)withAll函數(shù),這個(gè)函數(shù)檢查整個(gè)列表的空值,如果發(fā)現(xiàn)任何空值,回調(diào)將不會(huì)被調(diào)用,如果列表沒有空值,回調(diào)將調(diào)用整個(gè)列表轉(zhuǎn)換為非可選項(xiàng)列表T

T? withAll<T>(
    List<T?> optionals,
    T Function<List<T>> callback,
) => optionals.any((e) => e == null)
        ? null
        : callback(optionals.cast<T>());

然后添加一個(gè)方法,調(diào)用withAll函數(shù),為他提供可選值列表,只有當(dāng)列表不包含任何空值的時(shí)候才會(huì)調(diào)用回調(diào)

String getFullName(
    String? firstName,
    String? lastName,
) => withAll([
        firstName,
        lastName,
    ], (names) => names.join(' ')) ?? 'Empty';

測(cè)試一下

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。

今天增加了一個(gè)讓別人看不懂代碼的小思考。

以上就是Flutter基于Dart Unwrapping Multiple Optional小技巧的詳細(xì)內(nèi)容,更多關(guān)于Flutter Dart Multiple Optional的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

乌拉特中旗| 扶余县| 涟水县| 上饶县| 昌平区| 五大连池市| 云安县| 宕昌县| 诸暨市| 长子县| 房山区| 鲜城| 樟树市| 保定市| 盐山县| 中西区| 梧州市| 兴宁市| 蕲春县| 邯郸县| 遂宁市| 尼勒克县| 沧州市| 康马县| 苏尼特右旗| 班戈县| 乌审旗| 神农架林区| 信宜市| 南宫市| 涞水县| 阳曲县| 莆田市| 奉化市| 舒城县| 香河县| 阜阳市| 德惠市| 开鲁县| 长子县| 萨迦县|