//闭包参数类型
func hasClourseMatch(arr:[Int], value:Int, cb:(num:Int , value:Int) -> Bool) -> Bool{
for item in arr{
//只是调用cb 闭包closure里面的函数,不管如何实现。
//类似于OC的blocks c里面的Function Pointer
if (cb(num: item , value:value)){
return true;
}
}
return false;
}
/闭包就是用在两个对象之间通讯。
var arr = [20,9,100,34,89,38];
//closure类似于OC的blocks
//closure =~ Delegate
//找是否arr里面比40大的数
var v1 = hasClourseMatch(arr,value: 40,cb: {
(num:Int,value:Int) -> Bool in
return num >= value;
}
);
print("v1 is \(v1)");
var v2 = hasClourseMatch(arr, value: 50) { (num, value) -> Bool in
return num < value;
};
print("v1 is \(v2)");
var v3 = hasClourseMatch(arr, value: 10) {
// (num, value) -> Bool in
return $0 < $1;
};
print("v3 is \(v3)");
var v4 = hasClourseMatch(arr, value: 90) {
// (num, value) -> Bool in
return $0 > $1;
}