Swift中闭包(closure)的使用
发布时间:2020-12-14 01:47:08 所属栏目:百科 来源:网络整理
导读:有关闭包的定义: typealias colsureName=(ParamClass , ParamClass? )- Void ; 定义方法使用闭包时: func colsureTestMethod:(colsureName):colsure; eg: // 定义回调闭包 typealias onSuccess=( MKNetworkOperation , String )- Void ; typealias onError
有关闭包的定义:
typealiascolsureName=(ParamClass,ParamClass?)->Void;
定义方法使用闭包时:
func colsureTestMethod:(colsureName):colsure;
eg:
// 定义回调闭包 typealias onSuccess=( MKNetworkOperation , String )-> Void ;
typealias
onError=(
NSError
)->
Void
;
//调用
private
func
operation_request(#urlstring:
String
,parmaDic:[
String
:
String
],httpMethod:
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 !) -> in onErr(err); }); net_engine ?. enqueueOperation (op);
}
方法内直接定义colsure并且为参数的用法:
func
logtrue(predicate:(
Int
,170)">Int
)->
Bool
{
var a = 100 var b = 101 return predicate(a,b)>a*b
}
输出结果:false
var flag = logtrue { (a: Int ) -> Int in return a+c
}
关于@autoclosure
func
logbool(
@autoclosure
predicate:()->
Bool
){
if predicate(){ print ( "true" ) } else { "false" ) }
}
用
@autoclosure 定义的
闭包
,可以直接使用类似 “
logbool
(
2
>
1
)” 的写法来使用 或者“
logbool
({
return
1
}())”的方法来使用,
@autoclosure 只能用来定义无参数的闭包
func
logboolValue(predicate:()->
"false"
)
} }
logboolValue
({
1
})
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |