Swift中带Int参数的闭包如何初始化?
如何初始化带Int参数的闭包类型
(Int) -> () 嘿,这个问题其实和你已经掌握的无参数闭包初始化逻辑一脉相承,只是需要适配闭包的参数要求就行,我给你举几个常用的实现方式:
1. 初始化空实现的闭包
如果你只是需要先给闭包一个合法的初始值(暂时不需要具体逻辑),可以忽略传入的Int参数,写一个空实现:
class TestClass { var myClosure: (Int) -> () init() { // 用下划线`_`表示忽略传入的Int参数,闭包内部什么都不做 myClosure = { _ in } } }
2. 初始化带默认逻辑的闭包
如果想在初始化时给闭包设置一个默认的处理行为(比如打印传入的数字),可以在闭包体内使用参数:
class TestClass { var myClosure: (Int) -> () init() { myClosure = { number in print("收到的整数是:\(number)") } } }
补充说明
你的闭包类型(Int) -> ()表示:它接收一个Int类型的输入参数,并且没有返回值。所以只要你赋值的闭包符合这个签名要求(不管是空实现还是有具体逻辑),就完成了合法的初始化。
如果之后需要修改闭包的行为,直接重新赋值即可,比如:
let test = TestClass() test.myClosure = { num in print("修改后的逻辑:数字乘以2是\(num * 2)") }
内容的提问来源于stack exchange,提问作者Evgeniy Kleban
相关产品推荐
相关产品推荐

