import
uikit
varwords = [
"abd"
,"angry"
,"anger"
,"hungry"]
words
.filter //
按閉包的規則篩選
.map
//按閉包的規則轉換,
map並不修改原數值的內容,只是返回處理後的新陣列
.reduce
("oxox"
, combine: )
//按閉包規則組合三個字串
//上面三個方法其實是在一行,不斷的向後處理,更便於檢視,與下面相同效果
words
.filter
().map
( ).
reduce
("oxox"
,combine: )
//用隱式引數簡化
println(
words
.filter
.map
//把傳過來的每個元素統一進行乙個操作:(如果是送過來一對元素,則有
$0,$1)與c
相加 .
reduce
("oxox")
)//====
捕獲====
//閉包(函式也是閉包)中,可以捕獲閉包外的變數的位址,並使用之
func
sum(numbers: [
int]) -> [
int]
somenumber = numbers.
mapfor
item
innumbers
println
("sum1=
\(sum1)
,sum2=
\(sum2)
,sum3=
\(sum3)")
return
somenumber
}varintarr2: [
int]=[1,
2,3,
5]var
numberarr =
sum(
intarr2)
varnewarr =
numberarr
.map
newarr
//[2, 4, 7, 12]
//函式式程式設計
//將函式、方法作為引數送給系統方法
,不需要使用閉包了
words
.map
(println
) //
等價於words.map()
func
addstring(
varsomestring:
string
) ->
string
varnewwords =
words
.map
(addstring
) //["abd!","angry!","anger!","hungry!"]
//閉包
/函式都是
arc物件
func
makeincrementor(forincrement amount:
int) -> () ->
intreturn
incrementor
}letincrementbyten =
makeincrementor
(forincrement:10)
incrementbyten
()
//返回10
incrementbyten
()
//返回20
函式式程式設計 閉包
def curve pie a 25 defcurve x return a pow x,2 return curve f curve pie print f 2 輸出結果 ans 100 檢驗函式是否閉包 print f.closure 環境變數 a 25 print f.closure 0 ce...
Swift那些事兒 閉包(捕獲值)
參考 閉包可以在其定義的上下文中捕獲常量或變數。即使定義這些常量和變數的原域已經不存在,閉包仍然可以在閉包函式體內引用和修改這些值。swift最簡單的閉包形式是巢狀函式,也就是定義在其他函式的函式體內的函式。巢狀函式可以捕獲其外部函式所有的引數以及定義的常量和變數。import cocoa func...
函式式程式設計與閉包
函式式程式設計 functional programming,fp fp是程式設計正規化之一,他和物件導向程式設計是並列的關係,函式式程式設計我們可以認為是一種思維的方法,加上他的實現方法,我們常聽說的程式設計正規化還有面向過程程式設計 物件導向程式設計。面向過程其實就是現實世界的處理方式,一步一步...