swift 學習筆記一

來源:互聯網
上載者:User

標籤:類型   筆記   func   div   develop   多個   value   ret   pre   

看 Developing IOS 8 Apps with swift 的時候看到一些比較實用的點,記錄一下:

1、將函數作為參數傳遞。

比如:

寫一個兩個數求和的函數:performOperation(multiply)

        func performOperation(operation:(Double,Double) -> Double) {            if operandStack.count >= 2 {                dispalayValue = operation(operandStack.removeLast(),operandStack.removeLast())                enter()            }        }                func multiply(op1: Double, op2: Double) -> Double {            return op1 * op2        }
以上。有更酷的實現,用閉包的方法:

改進為:

        performOperation ({ (op1: Double, op2: Double) -> Double in            return op1 * op2        })                func performOperation(operation:(Double,Double) -> Double) {            if operandStack.count >= 2 {                dispalayValue = operation(operandStack.removeLast(),operandStack.removeLast())                enter()            }        }
編譯器會依據上下文判斷類型。所以,以上的 performOperaion 又能夠簡化為:

        performOperation ({ (op1, op2) in            return op1 * op2        })
op1,op2 的類型能夠判斷,當然傳回型別也能夠判斷,故而傳回型別也可省去。甚至連 return 也能夠省去。

因為編譯器不強制你一定要寫形參,故這裡的 op1, op2 也能夠省去,用 $0, $1, $2, ...... 分別代表第一個第二第三個參數等等。

所以。上面又能夠再次簡化為:

        performOperation ({ op1 * op2 })
swift 的編譯器真 TMD 僅僅能,哈哈!

等等,還沒完,

再簡化為:

        performOperation () { op1 * op2 }</span>
有個條件,就是 op1 * op2 是作為最後一個參數傳遞的時候就能夠這樣做,把函數參數移到括弧外面,如上。

其它的,假設有另外的參數的話就能夠像之前的那樣放在括弧()裡面;假設僅僅有一個參數的話。括弧還能夠直接去掉。例如以下:

        performOperation { op1 * op2 }
至此,簡化完成。


2、swift 支援多態,What an amazing !

比如。當你要求一個數的平方根的時候,而已還是想用回原來的函數 performOperation 。可是這個函數要求的形參是一個包括兩個 Double 類型的函數。求平方根僅僅須要傳入一個參數即可了啊,那麼來改造一下這個函數吧,在寫一個同名的函數 performOperation 。然後定義為僅僅須要一個形參就好了。

注意:swift 支援在一個類中同一時候存在同名的多個函數,形參不一樣就好了,就是多態啦~

那麼。再添加一個 performOperation 函數,例如以下:

        func performOperation(operation: Double -> Double) {            if operandStack.count >= 1 {                dispalayValue = operation(operandStack.removeLast())                enter()            }        }
如今就能夠這樣調用來計算數值平方根了。

        performOperation { sqrt($0) }

很多其它,能夠觀看《Developing IOS 8 Apps with Swift》的 More Xcode and Swift, MVC 一節。

swift 學習筆記一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.