[英]How to use initializer as Closure in Swift
How to pass an initializer as a parameter to a function?如何将初始值设定项作为参数传递给函数?
class A {
var num: Int
init() {
num = 3
}
}
func f(# createA: () -> A) -> A {
return createA()
}
f(createA: A) // This does not work
Update更新
Thank you for The Paramagnetic Croissant's answer:感谢顺磁性羊角面包的回答:
f(createA: { A() }) // Correct
But what if the initializer has an input?但是如果初始化器有一个输入呢?
class A {
var num: Int
init(a : Int) {
num = 3
}
}
func f(# createA: (a: Int) -> A) -> A {
return createA(a: 1)
}
let a = f(createA: {A(a: Int)}) // Wrong
Update OK I figured out:更新确定我想通了:
f(createA: { a in A(a: a) })
This works in Swift 2.0 beta (don't know about 1.2):这适用于 Swift 2.0 beta(不知道 1.2):
func f(createA createA: () -> A) -> A {
return createA()
}
f(createA: A.init)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.