第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數(shù)式 if else 在布爾值上

函數(shù)式 if else 在布爾值上

函數(shù)式編程 2021-07-29 14:07:59
我正在尋找一個非?;镜?if else 布爾可選值。我想念一些非?;镜臇|西所以老派的巢穴是這樣的    if (filterValue.isPresent()) {        if (filterValue.get()==true) {             method1();         } else {             method2();         }     } else {         method3();     }我嘗試了 2 次替換的各種嘗試filterValue.map(o -> o.TRUE ? method1() : method2()).orElse(method3());和filterValue.isPresent(filterValue.get().TRUE ? method1() : method2());似乎不太明白語法?誰能指出我正確的方向?
查看完整描述

3 回答

?
萬千封印

TA貢獻1891條經(jīng)驗 獲得超3個贊

map不起作用,因為既沒有method1也method2沒有返回值。并且void不允許映射到。


目前在 Java 8 中沒有真正巧妙的解決方案,但如果您碰巧使用 Java 9,您可以通過ifPresentOrElse(Consumer<T>, Runnable>)以下方式實現(xiàn):


filterValue.ifPresentOrElse(value -> {

    if(value){

        method1();

    } else {

        method2();

    }

}, () -> method3());


查看完整回答
反對 回復 2021-08-04
?
蕭十郎

TA貢獻1815條經(jīng)驗 獲得超13個贊

這將映射Optional到方法的返回值:


filterValue.map(o -> o.TRUE ? method1() : method2()).orElse(method3());

這不是你想要的,而且只有當方法返回一些東西并且它們之間兼容時它才會編譯。


雖然這無法編譯,因為isPresent()它不接受任何參數(shù)但返回一個boolean:


filterValue.isPresent(filterValue.get().TRUE ? method1() : method2());

老派方式是滿足您要求的方式。

Optional被引入以防止NullPointerException。

在某些特定情況下,當您想將 映射Optional到另一件事時,它會省去條件語句: Foo foo = Optional.map(..).map(...).get();。

但是你不是在這個配置中:你想根據(jù) 3 個不同的狀態(tài)來調(diào)用一個不同的方法Optional:存在和真、存在和假、不存在。

Optional不要提供直接的方法來執(zhí)行這樣的邏輯。


通過降低嵌套級別,您的代碼可以更具可讀性:


if (filterValue.isPresent() && filterValue.get()) {

    method1();

} else if (filterValue.isPresent()) {

    method2();

} else {

    method3();

}


查看完整回答
反對 回復 2021-08-04
  • 3 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號