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)
我得到了一个无关的参数标签错误!
帮助一个快速的菜鸟了解。为什么我需要标记类参数,但我不能标记函数参数?为什么函数和类以这种方式不同?我确信有些东西我不知道。
答案 0 :(得分:1)
由于未使用函数名称调用初始化函数,因此参数类型和名称用于消除多个init()
函数之间的歧义。因此,init()
函数参数默认具有外部名称。
您可以使用下划线明确选择退出默认参数名称:
init(_ name: String) {
self.name = name
}
答案 1 :(得分:0)