您的位置:首页 > 移动开发 > Swift

Swift 函数做参数和闭包做参数的一个细节差别

2015-12-11 17:35 417 查看
函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String:

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)->String{
var str=blockProperty(backMsg :"backMsg---by block inside func")
return ""
}


可以看出两者区别在,闭包做参数时声明的闭包结构是必须带一个外部参数名的

processWithBlock(cmdStr:String,blockProperty:(backMsg:String) ->String)

第二个参数是名为blockProperty的闭包,闭包的结构为 (backMsg:String) ->String

而函数作参数时必须不能带参数名

demo(str:String,addPrefix:(String)->String)
第二个参数是名为addPrefix的函数,函数的结构为 (String)->String


所以如果声明的变量,是个函数的结构,其中带有参数名,说明这是一个闭包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: