具有相同参数类型的Swift Initializers

时间:2017-03-20 03:37:13

标签: ios swift function struct object-initializers

enter image description here

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

如何决定调用哪种方法?

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

1 个答案:

答案 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的默认值毫无用处且毫无意义 - 但这并非违法,并且没有理由说它应该是。