日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift学习笔记 闭包表达式

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift学习笔记 闭包表达式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? 閉包是功能性自包含模塊,可以在代碼中被傳遞和使用。 Swift 中的閉包與 C 和 Objective-C 中的 blocks 以及其他一些編程語言中的 lambdas 比較相似。?

  閉包的形式主要有三種:

? ? ? ? ? 1. 全局函數(shù)是一個有名字但不會捕獲任何值的閉包

? ? ? ? ? 2. 嵌套函數(shù)是一個有名字并可以捕獲其封閉函數(shù)域內(nèi)值的閉包
? ? ? ? ? 3. 閉包表達式是一個利用輕量級語法所寫的可以捕獲其上下文中變量或常量值的沒有名字 的閉包?

? ? ? Swift 的閉包表達式擁有簡潔的風格,并鼓勵在常見場景中以實現(xiàn)語法優(yōu)化,主要優(yōu)化如下:

? ? ? ? ? * 利用上下文推斷參數(shù)和返回值類型

? ? ? ? ? * 單表達式(single-expression)閉包可以省略 return 關(guān)鍵字

? ? ? ? ? * 參數(shù)名稱簡寫
? ? ? ? ? * Trailing 閉包語法 (結(jié)尾閉包)

嵌套函數(shù):

var nums = [1,9,2,8] func testF(num1 : Int, num2 : Int) -> Bool{return num1 > num2 } sort(&nums, testF) println(nums)//[9, 8, 2, 1]

沒有優(yōu)化的閉包表達式:

var nums = [1,9,2,8] sort(&nums,{(num1:Int,num2:Int) -> Bool in //in 參數(shù)以及返回值與閉包主體的分割線
return num1 > num2
})
println(nums)//[9, 8, 2, 1]

簡化閉包函數(shù)表達式:(語法優(yōu)化)

var nums = [1,9,2,8] sort(&nums,{(num1,num2) in           //in 參數(shù)以及返回值與閉包主體的分割線return num1 > num2}) println(nums)//[9, 8, 2, 1]

再簡:

var nums = [1,9,2,8] sort(&nums,{ $0 > $1})//$0代表第一個數(shù),$1代表第二個參數(shù)
println(nums)//[9, 8, 2, 1]

再簡:

var nums = [1,9,2,8] sort(&nums,>)// 直接使用Swift的數(shù)組中的類型定義的關(guān)于大于號 (>) 的實現(xiàn) func >(lhs: Int, rhs: Int) -> Bool println(nums)//[9, 8, 2, 1]

?

Trailing 閉包語法 (結(jié)尾閉包)

? ? 當一個閉包表達式作為最后一個參數(shù)傳遞給函數(shù),我們可以使用結(jié)尾閉包來增強可讀性,上面的例子也可按照下面的寫法來寫:

var nums = [1,9,2,8] //這種寫法 sort(&nums){ num1,num2 -> Bool in //in 參數(shù)以及返回值與閉包主體的分割線return num1 > num2 } //這種寫法 sort(&nums){return $0 > $1 } //但是如果使用的是已聲明的函數(shù)的話,只能這種 sort(&nums,>) println(nums)//[9, 8, 2, 1]

比如數(shù)組的過濾可以簡便的這樣寫:

var nums = [1,9,2,8] var test = nums.filter { num -> Bool inreturn num%3 == 0//過濾掉不能被3整除的數(shù) } println(test)//[9]

?

var test = nums.filter {return $0%3 == 0//過濾掉不能被3整除的數(shù) }

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/imhere/p/4255327.html

總結(jié)

以上是生活随笔為你收集整理的Swift学习笔记 闭包表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。