//: 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...