Swift 具有相同参数类型的初始化器

Swift Initializers with same argument types

我不确定这是怎么回事。如您所见,有两个具有相同名称和参数类型的建议。

如何决定调用哪个方法?

调用的是带有参数的方法,但是如果我想调用的是包含计算的 init(不提供 windSpeedMilesPerHour 参数的值)怎么办?

一个快速测试,从你的例子中去除所有的渣滓,告诉你答案:

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 的默认值变得毫无用处和毫无意义——但这不是非法的,也没有理由应该是这样。