<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 高階函數 這個名字可能聽起來令人生畏,但是:[高階函數](https://en.wikipedia.org/wiki/Higher-order_function)(Higher-order Function)只是一個消費或產生函數的函數。 我們先來看看如何產生一個函數: ~~~java // functional/ProduceFunction.java import java.util.function.*; interface FuncSS extends Function<String, String> {} // [1] public class ProduceFunction { static FuncSS produce() { return s -> s.toLowerCase(); // [2] } public static void main(String[] args) { FuncSS f = produce(); System.out.println(f.apply("YELLING")); } } ~~~ 輸出結果: ~~~ yelling ~~~ 這里,`produce()`是高階函數。 **\[1\]**使用繼承,可以輕松地為專用接口創建別名。 **\[2\]**使用 Lambda 表達式,可以輕松地在方法中創建和返回一個函數。 要消費一個函數,消費函數需要在參數列表正確地描述函數類型。代碼示例: ~~~java // functional/ConsumeFunction.java import java.util.function.*; class One {} class Two {} public class ConsumeFunction { static Two consume(Function<One,Two> onetwo) { return onetwo.apply(new One()); } public static void main(String[] args) { Two two = consume(one -> new Two()); } } ~~~ 當基于消費函數生成新函數時,事情就變得相當有趣了。代碼示例如下: ~~~java // functional/TransformFunction.java import java.util.function.*; class I { @Override public String toString() { return "I"; } } class O { @Override public String toString() { return "O"; } } public class TransformFunction { static Function<I,O> transform(Function<I,O> in) { return in.andThen(o -> { System.out.println(o); return o; }); } public static void main(String[] args) { Function<I,O> f2 = transform(i -> { System.out.println(i); return new O(); }); O o = f2.apply(new I()); } } ~~~ 輸出結果: ~~~ I O ~~~ 在這里,`transform()`生成一個與傳入的函數具有相同簽名的函數,但是你可以生成任何你想要的類型。 這里使用到了`Function`接口中名為`andThen()`的默認方法,該方法專門用于操作函數。 顧名思義,在調用`in`函數之后調用`andThen()`(還有個`compose()`方法,它在`in`函數之前應用新函數)。 要附加一個`andThen()`函數,我們只需將該函數作為參數傳遞。`transform()`產生的是一個新函數,它將`in`的動作與`andThen()`參數的動作結合起來。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看