美文网首页
Swift 函數和閉包

Swift 函數和閉包

作者: XCoderLiu | 来源:发表于2016-04-08 16:53 被阅读56次

    最近在學習swift的時候看了下喵神的一片文章

    func greaterThan(comparer: Int) -> Int -> Bool
    {
        return { $0 comparer }
    }
    let greaterThan10 = greaterThan(10);
    greaterThan10(13) // => true
    greaterThan10(9) // => false
    

    一開始沒怎麼看懂之前認為->箭頭就代表返回值,不理解為什麼會有->Int->Bool後來看了看蘋果的官方文檔才知道大神簡化了一下~~

    呵呵噠

    「Functions are a first-class type. This means that a function can return another function as its value.
    func makeIncrementer() -> ((Int) -> Int) {
      func addOne(number: Int) -> Int {
        return 1 + number
      }
     return addOne
    }
    var increment = makeIncrementer()
    increment(7)」
    摘錄自: Apple Inc. 「The Swift Programming Language (Swift 2.2)。」 iBooks.
    

    事實上是這樣的,Swift中函數是作為一等類型是可以直接當做參數傳遞的。所以喵神的代碼直接省掉了部分邏輯,看起來就比較高逼格了,$0就是代表第一個參數的意思。改一下就變成了:

    func greaterThan(comparer: Int) -> ((Int) -> Bool)
    {
        func numbergreater(num: Int) -> Bool
            {
                return num > comparer
            }
         return  numbergreater
    }
    let greaterThan10 = greaterThan(10);
    greaterThan10(13) // => true
    greaterThan10(9) // => false
    

    相关文章

      网友评论

          本文标题:Swift 函數和閉包

          本文链接:https://www.haomeiwen.com/subject/onmvlttx.html