有关闭包的定义:
typealias colsureName=(ParamClass,ParamClass?)->Void;
定义方法使用闭包时:
func colsureTestMethod:(colsureName):colsure;
eg:
//定义回调闭包
typealiasonSuccess=(MKNetworkOperation,String)->Void;
typealiasonError=(NSError)->Void;
//调用
privatefuncoperation_request(#urlstring:String,parmaDic:[String:String],httpMethod:String,onSucc:onSuccess,onErr:onError){
let op:MKNetworkOperation=MKNetworkOperation(URLString: urlstring, params: parmaDic, httpMethod: httpMethod);
op.addCompletionHandler({ (mop:MKNetworkOperation!) -> Void in
onSucc(mop,mop.responseString());
}, errorHandler: { (mop:MKNetworkOperation!, err:NSError!) -> Void in
onErr(err);
});
net_engine?.enqueueOperation(op);
}
方法内直接定义colsure并且为参数的用法:
funclogtrue(predicate:(Int,Int)->Int)->Bool{
var a = 100
var b = 101
return predicate(a,b)>a*b
}
输出结果:false
varflag = logtrue { (a:Int, c:Int) -> Int in
return a+c
}
关于@autoclosure
funclogbool(@autoclosurepredicate:()->Bool){
if predicate(){
print("true")
}else{
print("false")
}
}
用@autoclosure 定义的闭包,可以直接使用类似“logbool(2>1)” 的写法来使用 或者“
logbool({return2>1}())”的方法来使用,@autoclosure 只能用来定义无参数的闭包
funclogboolValue(predicate:()->Bool){
if predicate(){
print("true")
}else{
print("false")
}
}
logboolValue({return2>1})
相关文章
- javascript中闭包最简单的简绍
- sklearn包中K近邻分类器 KNeighborsClassifier的使用
- 什么是闭包,闭包的使用场景、闭包的优缺点,以及解决内存泄露的方法
- java中的闭包
- logback框架使用误区 如何将所有包的ERROR级别日志集中打印到一个日志文件中
- linux如何查看当前虚拟环境中使用的所有的包,并快速安装到另一个虚拟环境中
- 使用net.sf.fjep.fatjar插件将第三方JAR包打包进自已的JAR包中
- Golang中闭包的理解
- 【项目实战】使用Hutool-json工具包中的方法序列化,对象数据中值为null的属性被过滤的问题
- Hutool工具包中 BeanUtil中主要方法 beanToMap ,toBean,copyProperties,fillBeanWithMap 的使用