2017-05-14 60 views
0

我怎樣才能組成一個雙功能與如下因素例如函數:創作的Java雙功能和功能

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雙功能與參數。

我已經試過:

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

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

但沒有兩部作品。

+2

'zeroPadding.apply(removeNonDigitChars.apply( 「789.65」),8) ;' – 4castle

回答

0

您的兩次嘗試都是以錯誤的順序應用函數。在之前,您希望removeNonDigitChars應用於字符串,並將字符串賦予zeroPadding

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

如果你想有一個組合功能,只是自己將它們結合起來:

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

然後,使用這樣的:

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

我明白了。謝謝。 –