簡體   English   中英

編寫Java雙功能和函數

[英]Composing Java Bifunction and Function

在下面的示例中,如何將Bifunction與函數組合在一起:

public static void main(String[] args) {
    BiFunction<String, Integer, String> zeroPadding = (string, zeros) -> String.format("%0" +zeros+ "d", Integer.valueOf(string));

    Function<String, String> removeNonDigitChars = (string) -> string.replaceAll("\\D", "");
}

首先,我想刪除非數字字符,並將removeNonDigitChars結果傳遞給帶有參數的zeroPadding BiFunction。

我試過了:

zeroPadding.andThen(removeNonDigitChars).apply("789.65", 8);

removeNonDigitChars.compose(zeroPadding).apply("789.65", 8);

但是,兩個作品都沒有。

您的兩次嘗試均以錯誤的順序應用功能。 您希望在將字符串提供給zeroPadding 之前removeNonDigitChars應用於該字符串。

不幸的是,您不能使用andThen()compose()組合這兩個函數。

如果需要組合功能,只需自己組合即可:

BiFunction<String, Integer, String> combined = (string, zeros) ->
        zeroPadding.apply(removeNonDigitChars.apply(string), zeros);

然后像這樣使用:

combined.apply("789.65", 8) // returns "00078965"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM