Swift中方法闭包参数不能省略括号的一种情况
发布时间:2020-12-14 07:01:17 所属栏目:百科 来源:网络整理
导读:大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在swift中,如果方法的最后一个参数是一个闭包类型,则可以省略该参数,直接在函数后面跟一个闭包,比如: func test(coun
我们知道在swift中,如果方法的最后一个参数是一个闭包类型,则可以省略该参数,直接在函数后面跟一个闭包,比如: func test(count:Int,(Int)->Bool){
//...
}
可以这么调用: test(11){(x)->Bool in
//...
}
但是有些情况不能省略括号,比如for语句中: for dinosaur in dinosaurs.filter {(dinosaur) -> Bool in
distanceBetween(tower.spriteComponent.node,nodeB: dinosaur.spriteComponent.node) < towerType.range
}{
if let t = target{
if dinosaur.spriteComponent.node.position.x > t.spriteComponent.node.position.x{
target = dinosaur
}
}else{
target = dinosaur
}
}
以上语句会报错的,因为for语句后面也要跟{},Swift不知道该{}到底是哪个{},好像绕口令… 这时必须要在filter后面用()包围住{} 但如果不在for语句中,则可以省略(),比如: let x = dinosaurs.filter {(dinosaur)->Bool in
distanceBetween(tower.spriteComponent.node,nodeB: dinosaur.spriteComponent.node) < towerType.range
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |