[英]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.