gpt4 book ai didi

class - 检查init方法的参数

转载 作者:行者123 更新时间:2023-11-28 13:21:14 25 4
gpt4 key购买 nike

我在尝试编写我的第一个 swift 类时遇到了一个有点愚蠢的问题。我正在为我的类编写一个 init 方法,我想(引发异常)/(以某种方式做某事)在传递给初始化程序的参数错误时报告错误。我的课就这么简单:

class Phrase: NSObject {
let name : String
let voices : Array<Voice>
init(name: String, voices: Array<Voice>){
if (name == "" || voices.count == 0){
//do something!
}
self.name = name
self.voices = voices
}
}

提前致谢!

最佳答案

不要为此使用 init - 如果参数无效,请使用可以返回 nil 的类函数:

class Phrase: NSObject {
var name : String
var voices : Array<Voice>

init() {
self.name = "something safe"
self.voices = [Voice]()
}

class func phraseOrNil(name: String, voices: Array<Voice>) -> Phrase? {
if (name == "" || voices.count == 0){
let p = Phrase()
p.name = name
p.voices = voices
return p
} else {
return nil
}
}
}

...然后您可以在主代码中优雅地失败(或者如果您真的想要抛出异常,如上所示)。另见 How should I handle parameter validation Swift ,尽管这不涉及您的异常问题。

另请注意,我将您的 let 声明更改为 var,因为我们需要更改它们的值。

关于class - 检查init方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25617926/

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