<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之旅 廣告
                # Swift 柯里化(Currying) 在計算機科學中,柯里化(英語:Currying),又譯為卡瑞化或加里化,是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,并且返回接受余下的參數而且返回結果的新函數的技術。這個技術由 Christopher Strachey 以邏輯學家哈斯凱爾·加里命名的,盡管它是 Moses Sch?nfinkel 和 戈特洛布·弗雷格 發明的。 ------[維基百科](http://zh.wikipedia.org/wiki/Currying) Swift支持將方法柯里化,類似于批量創建某個帶有固定參數的方法,就像下面這個例子,用Swift做個簡單的加法運算: ~~~ func?sum(a:?Int,b:?Int) ->?Int?{ ? ??return?a + b } sum(1,?2) ??//輸出3 ~~~ 創建一個柯里化的方法很容易,雖然看起來似乎和我們以前寫的方法不太一樣,但大體來說是相似的: ![](https://box.kancloud.cn/2016-01-18_569ca449f1db1.jpg) 參數列表的每個參數都用單獨的圓括號括起來,其他部分都和以前一樣,把上面那個簡單的Swift標準方法改成柯里化之后就像這樣: ~~~ func?sum(a:?Int)(b:?Int) ->?Int?{ ? ??return?a + b } var?sumByFirst =?sum(1) sumByFirst(b:?4)?//輸出5 ~~~ 只需要傳入第一個參數,返回的sumByFirst是一個函數,它包含剩余的其他參數,以及剛剛傳入進去的那個1,接著以它自己作為方法傳入第二個參數b就行了。 如果是三個參數就像這樣:? ~~~ func?sum(a:?Int)(b:?Int)(c:?Int) ->?Int?{ ? ??return?a + b + c } var?sumByFirst =?sum(1) var?sumBySecond =?sumByFirst(b:?4) sumBySecond(c:?10)??//輸出15 ~~~ 除了第一個參數以外,其他的參數都要顯式地寫上參數標簽,并且要按參數排列的順序調用。 一個括號中放兩個參數也可以:? ~~~ func?sum(a:?Int)(b:?Int, c:?Int) ->?Int?{ ? ??return?a + b + c } var?sumByFirst =?sum(1) sumByFirst(b:?4,c:?10)??//輸出15 ~~~ 在某些情況下,你可能會用某個相同的參數重復調用某個方法,那么利用柯里化會使代碼更易于維護: ~~~ func?sum(a:?Int)(b:?Int) ->?Int?{ ? ??return?a + b } var?sumWithFive =?sum(5) sumWithFive(b:?5) sumWithFive(b:?10) sumWithFive(b:?15) ~~~
                  <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>

                              哎呀哎呀视频在线观看