函数作参数:
func demo(str:String,addPrefix:(String)->String)->String{ return addPrefix(str) } func addPrefix(str2:String)->String{ return "prefix"+str2 } print(demo("123123", addPrefix: addPrefix))
闭包做参数:
func processWithBlock(cmdStr:String?,blockProperty:(backMsg:String) ->())->String{ blockProperty(backMsg :"backMsg---by block inside func") return "" }
函数作参数,可以看出和闭包做参数区别在,函数做参数时声明结构不能带内参名,闭包做参数时声明结构必须带一个外参名(为了不冲突)
原文:http://www.cnblogs.com/rayshen/p/5039735.html