1 //: Playground - noun: a place where people can play
2
3 import UIKit
4
5 //*******************嵌套函数*****************************
6 func getMathFunc(type:String) -> ((Int) -> Int) {
7 func squre(num:Int) -> Int{
8 return num * num
9 }
10 func cube(num:Int) -> Int{
11 return num * num * num
12 }
13 switch (type) {
14 case "squre":
15 return squre
16 default:
17 return cube
18 }
19 }
20
21 var mathFunc = getMathFunc("squre")
22 mathFunc(4)
23 var mathFunc2 = getMathFunc("other")
24 mathFunc2(4)
25
26
27 //********************闭包****************************
28 // { (形参列表) -> 返回值类型 in
29 // 可执行表达式
30 // }
31
32 func getMathFunc1(type:String) -> ((Int) -> Int) {
33 func squre(num:Int) -> Int{
34 return num * num
35 }
36 func cube(num:Int) -> Int{
37 return num * num * num
38 }
39 switch (type) {
40 case "squre":
41 return {(num:Int) -> Int in
42 return num * num
43 }
44 default:
45 return {(num:Int) -> Int in
46 return num * num * num
47 }
48 }
49 }
50 var maxFunc3 = getMathFunc("squre")
51 maxFunc3(5)
52 var maxFunc4 = getMathFunc("other")
53 maxFunc4(5)
54
55 //
56 var squre: (Int) -> Int = {(num) in return num * num}
57 squre(3)
58
59
60 //?? 如果??左边有值就就是原值,如果没有值那么就设置为??右边的值
61 var a:Int?
62 //a = 11
63 print(a ?? 2)
//: Playground - noun: a place where people can play
import UIKit
print("555")
// MARK - guard
func checkup(person:[String:String]){
guard let id = person["id"] else {
print("没有id,不能进入")
return
}
guard let exam = person["exam"] else{
print("没有exam,不能进入")
return
}
print("id:(id),exam:(exam)--批准进入")
}
//checkup(["id":"123"])
//checkup(["exam":"456"])
checkup(["id":"123","exam":"456"])
//MARK - 熟悉观察
let MaxValue = 999
let MinValue = -999
var number = 0 {
willSet{
print("从(number)变为(newValue)")
}
didSet{
if number > MaxValue {
number = MaxValue
}else if number < MinValue{
number = MinValue
}
print("已经从(oldValue)变为(number)")
}
}
number = 1000
number
//MARK - 扩展 extension
//对Int扩展,增加一个方法
extension Int {
func times(closure:(() -> ())?){
if self >= 0 {
for _ in 0..<self {
closure?()
}
}
}
}
3.times{print("走起")}
//MARK 协议扩展
extension CustomStringConvertible{
var upperDescription:String{
return self.description.uppercaseString
}
}
["key":"value"].upperDescription
//map:得到一个由闭包里面的返回值组成的新序列
//flatMap:与map类似的功能,但是会过滤掉返回值里面的nil值
//filter:得到一个由闭包返回值为true的值组成的新序列
var result = [1,2,3,4,5].map{$0 * 2}
result
result = [1,2,3,4,5].filter{$0 > 2}
result
//MARK 单例
class TestObject {
static let testObject = TestObject()
//私有构造,保证外部对象通过init方法创建单例类的其他实例
private init() { }
}
源码下载:https://github.com/pheromone/swift-extension-
http://download.csdn.net/detail/shaoting19910730/9515986