我不确定这是如何运作的。如您所见,有两个具有相同名称和参数类型的建议。
如何决定调用哪种方法?
这是带有一个被调用的参数的方法,但如果我想调用的是包含计算的init(不提供windSpeedMilesPerHour参数的值),该怎么办?
答案 0 :(得分:1)
快速测试,从你的例子中删除所有糟粕,告诉你答案:
struct S {
init(a:Int) {
print("first one")
}
init(a:Int, b:Int=3) {
print("second one")
}
}
let s = S(a:4) // "first one"
所以基本上第一个初始化器使得在没有明确的b
参数的情况下调用第二个初始化器是不可能的。这是一个愚蠢的事情 - 你已经使b
的默认值毫无用处且毫无意义 - 但这并非违法,并且没有理由说它应该是。