Swift 閉包表示式 來自CocoaChina

2021-08-04 22:40:58 字數 1962 閱讀 3481

//: playground - noun: a place where people can play

import

uikit

vartitle =

"swift

閉包表示式-來自

cocoachina"

vardescribe =

"1,利用上下文推斷引數和返回值型別

;2,單表示式閉包可以省略

return

關鍵字;3

,引數名稱簡寫;4,

trailing

閉包語法"

//1,

字母逆序排序

letnames = [

"china"

,"alex"

,"barrt"

,"ewa"

,"cocoa"

,"eye"]

//系統提供

sort函式:

排序兩個引數:

a,已經型別的陣列;

b,排序閉包

(string,string) -> bool

func

backwards(s1:

string

,s2:

string

) ->

bool

varfirst =

"第一種排序方式

:排序函式"

varfirstreversed =

names

.sorted

(by:

backwards)

/* 閉包表示式的形式

*/ varsecond =

"第二種排序方式

:排序內聯閉包"

varsecondreversed =

names

.sorted

// in

表示閉包的引數和返回值型別定義已經完成,閉包函式體即將開始 //

根據上下文推斷型別

varsecondreverseda =

names

.sorted()

varsecondreversedb =

names

.sorted

varthird =

"第三種排序方式

:運算子函式"

varthirdreversed =

names

.sorted

(by: >)

vartrailing =

"trailing閉包"

vartrailingdescribe =

"如果是乙個很長的閉包表示式作為最後乙個引數傳遞給函式,可以使用

trailing

閉包增強函式的可讀性"

varmap =

"map

方法的使用"

//將int型別的陣列轉化為對應的字串型別的陣列

letdigitnames = [0:

"零",

1:"一

",2:

"二",

3:"三

",4:

"四",

5:"五

",6:

"六",

7:"七

",8:

"八",

9:"九

"]let

numbers = [14,

305,9,

94]let

strings =

numbers

.map

return

str }

// !

代表force-unwrap

varcaputure = "捕獲

caputure"

varcaputuredescribe =

"閉包可以在其定義的上下文中捕獲常量或變數。即使定義這些常量和變數的作用域已經不存在了,閉包仍然可以在閉包函式體內引用和修改這些值"

swift 閉包本質,閉包表示式,尾隨閉包

typealias fn int int func getfn fn return sum var f1 getfn f1 1 f1 1 f1 1 f1 1 結果 解釋 閉包能夠使用其外層函式的區域性變數,所以函式值能夠增加 本質 編譯器給sum函式外層getfn函式的count屬性分配了堆空間,所...

swift學習之三 閉包表示式

簡要介紹一下 swift 中的閉包與 c 和 objective c 中的 塊 blocks 比較相似。閉包表示式語法規則 舉乙個例子 var reversed sorted names,sorted函式需要兩個引數,第乙個陣列,第二個閉包,閉包返回 true false 但是,swift 的閉包表...

函式表示式 閉包

有權訪問另乙個函式作用域內變數的函式。常見的方式就是在乙個函式的內部建立另外乙個函式。functiona b a a內的b可以訪問a的內部變數color 閉包只能取到包含函式中任何變數的的最後乙個值。function a return arr console.log a 0 10 console.l...