美文网首页
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 函數和閉包

    最近在學習swift的時候看了下喵神的一片文章 一開始沒怎麼看懂之前認為->箭頭就代表返回值,不理解為什麼會有->...

  • closure

    閉包語法表達: 從上下文推斷當將閉包作為內聯閉包表達式傳遞給函數或方法時,總是可以推斷出參數類型和返回類型。因此,...

  • Swift @noescape與@escaping

    Swift 1.2之後,就推出了@noescape語法,用來修飾閉包參數。但我想或許有些人跟我一樣,直到換了Swi...

  • Swift的那些小事加個二 - 和我一起Swift

    在上一篇的教學當中,講到了常數let 常數名稱、變數var 變數名稱、函式func 函式名稱(參數){函式內容}、...

  • golang:defer语句

      defer語句將函數調用壓到棧中,函數調用的順序遵循Last In First Out的原則。棧中的函數將在調...

  • 第二章 函數

    我們已經在第1章討論過,在javascript中,函數其實就是對象,使函數不同意其他對象的決定性特點是函數存在一個...

  • SQL语句中日期的计算方法大全

    sql语句中的日期处理 一.日期處理函數 1.日期增減函數dateadd(datepart,number,dtae...

  • swift中闭包和OC中block的定义和用法比较

    一.闭包的介绍 闭包和OC中的block非常相似 OC中的block是匿名的函数 Swift中的闭包是一个特殊的函...

  • 17-Swift中闭包的使用

    一、闭包的介绍 闭包和OC中的block非常相似:OC中的block是匿名的函数;Swift中的闭包是一个特殊的函...

  • 一天一天

    地球的足跡 數數已過了幾年,數數已有的歲月,數數你心裡的星星。我在親近地球的神秘,時間的飛逝就在我閉眼的那一刻,萬...

网友评论

      本文标题:Swift 函數和閉包

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