【发布时间】:2018-07-03 18:18:37
【问题描述】:
Error: play.playground:34:5: error: invalid redeclaration of 'init'
如何在 Swift 中为一个类设置多个初始化器?我认为如果我为每个 init 提供不同的参数,那么每个 init 都会有不同的方法签名,我可以创建多个。为什么这不起作用,或者我在其他地方犯了错误? (下面是从操场上拉出来的。)
//make a class
class Human{
var name: String
var age: Int
init(_ name: String){
self.name = name
self.age = -1
}
init(name: String, age: Int){
self.name = name
self.age = age
}
}
var newHuman = Human("bob")
print(newHuman.name)
var newHuman2 = Human(name: "Marmelade", age: 19)
print(newHuman2)
【问题讨论】:
-
您的代码在复制并粘贴到 Xcode 9.4 Swift 游乐场时可以正常工作。
-
请注意,这样做的一种有趣方法是,将
init(name: String, age: Int = -1)传递给相同的方法并避免冗余。不过,这并没有回答你的问题。请参阅docs.swift.org/swift-book/LanguageGuide/Functions.html中的“默认参数值”部分 -
酷,我不知道交易是什么——我只是做了同样的事情。谢谢!
-
@Larme 是的,好点,会做的!
-
@MariaTeleki 不要使用 -1。将属性设为可选并将其设置为 nil。