class NamedShape {
var numberOfSides: Int = 0
var name: String
init(name: String) {
self.name = name
}
func simpleDescription() -> String {
return "A shape with \(numberOfSides) sides named \(name)"
}
}
我有以下示例类。要创建一个新实例,我这样做
let shape = NamedShape(name: "Test")
参数由 init() 函数捕获,对吧?但是,如果我这样做:
let shape = NamedShape("Test")
我收到缺少参数标签错误!
但是,如果我定义一个像这样的愚蠢函数:
func printInt(numberIn: Int) {
println(numberIn)
}
我可以使用以下方式调用它:
printInt(5)
但是,如果我尝试使用以创建类的方式格式化的参数来调用它:
printInt(numberIn: 5)
我收到无关参数标签错误!
帮助快速菜鸟理解。为什么我需要标记类参数,但不能标记函数参数?为什么函数和类会有这样的不同?我确信我缺少一些东西。
最佳答案
由于初始化函数不是使用函数名称调用的,因此参数类型和名称用于消除多个 init()
函数之间的歧义。因此,init()
函数参数默认具有外部名称。
您可以使用下划线明确选择退出默认参数名称:
init(_ name: String) {
self.name = name
}
关于swift - 为什么我必须以键值形式将参数传递给类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239518/