标签:des style class code http com
1.全局函数是一个有名字但不会捕获任何值的闭包
2.嵌套函数是一个有名字并且可以捕获其封闭函数域内值的闭包
3.闭包表达式时一个利用轻量级语法缩写的可以捕获其上下文中变量或者常量值的没有名字的闭包
1.利用上下文推断参数和返回值类型
2.单表达式闭包可以省略return关键字
3.参数名称简写
4.Trailing闭包语法
一般情况下我们采用如下方式使用sort
1 |
// Playground - noun: a place where people can play |
2 |
3 |
import Cocoa |
4 |
5 |
func backwards(str1:String,str2:String)->Bool{ |
6 |
return str1>str2 |
7 |
} |
8 |
let names=[ "LiSen" , "Dinal" , "Apple" , "Swift" ] |
9 |
let reverse=sort(names, backwards) |
但是我们会发现这个写法是如此的繁琐,那么我们可以采用如下的闭包写法
1 |
import Cocoa |
2 |
let names=[ "LiSen" , "Dinal" , "Apple" , "Swift" ] |
3 |
let reverse=sort(names,{(s1:String,s2:String)->Bool in s1>s2}) |
4 |
reverse |
如果闭包只有一条语句,那么我们可以省略掉return语句。
由于闭包能够自动推断参数类型,并且可以采用参数简写的方式,我们可以进一步缩减上面的语句。
1 |
// Playground - noun: a place where people can play |
2 |
3 |
import Cocoa |
4 |
let names=[ "LiSen" , "Dinal" , "Apple" , "Swift" ] |
5 |
let reverse=sort(names,{ $0 > $1}) //$0代表第一个参数,$1代表第二个参数,参数名称必须由0开始 |
6 |
reverse |
对于上面的闭包,更简单的写法如下
1 |
import Cocoa |
2 |
let names=[ "LiSen" , "Dinal" , "Apple" , "Swift" ] |
3 |
let reverse=sort(names, >) |
4 |
reverse |
1 |
import Cocoa |
2 |
let digitNumber=[ |
3 |
0: "Zero" ,1: "One" ,2: "Two" ,3: "Three" ,4: "Four" ,5: "Five" ,6: "Six" ,7: "Seven" ,8: "Eight" ,9: "Nine" |
4 |
] |
5 |
let numbers = [1990,629] |
6 |
numbers.map( |
7 |
(var number) -> String in{ //var定义变量参数用于在下面修改 |
8 |
var output = "" ; |
9 |
while (number>0){ |
10 |
output=digiNumber[number%10]!+output //!防止查找失败返回错误 |
11 |
number/=10; |
12 |
} |
13 |
return output |
14 |
} |
15 |
|
16 |
) |
1 |
// Playground - noun: a place where people can play |
2 |
3 |
import Cocoa |
4 |
func MakeIncrement(forIncrement amount:Int)-> ()->Int{ //MakeIncrement外部名称是forIncrement,返回一个无参的返回值是Int类型的函数 |
5 |
var totalAmount = 5 |
6 |
func Increment() -> Int{ |
7 |
totalAmount += amount |
8 |
return totalAmount |
9 |
} |
10 |
return Increment |
11 |
} |
12 |
let increment = MakeIncrement(forIncrement: 10) |
13 |
increment() //15 |
标签:des style class code http com
原文地址:http://www.cnblogs.com/ilisen/p/3807324.html