gpt4 book ai didi

swift - Kotlin 是否支持像 swift 这样的可选构造函数?

转载 作者:搜寻专家 更新时间:2023-10-31 22:04:08 25 4
gpt4 key购买 nike

我想在 Kotlin 中使用一个可选的构造函数,它要么创建一个对象,要么返回 null。

这是一个 Swift 示例,展示了我希望它如何工作:

class Beer {
init?(yourAge : Int){
if yourAge < 21 {
return nil
}
}
}
Beer(yourAge: 17) //is nil
Beer(yourAge: 23) //a Beer object

我当然可以将检查放在另一个函数中(下面是与前面示例等效的 Kotlin),但它不是那么好

class Beer(){
fun initialize(yourAge : Int): Beer? {
if (yourAge < 21){
return null
}else {
return Beer()
}
}
}

最佳答案

正如 Yole 所说,Kotlin 不支持可选的构造函数,但您可以使用在伴生对象中定义的调用运算符来实现您想要的:

class Beer {
companion object {
operator fun invoke(yourAge: Int) = if (yourAge < 21) {
null
} else {
Beer()
}
}
}

Beer(17) // null
Beer(23) // instance of Beer

关于swift - Kotlin 是否支持像 swift 这样的可选构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54147909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com