Swift说函数是由参数类型序列和返回类型组成的类型。但初始化程序允许具有相同类型但不同的param本地/外部名称。从类型的角度来看,它如何区分这一点。或者因为它不是要传递它,它被处理完全不同于函数?
有人可以帮助我理解这个吗?
class Test {
init(param1: Int) {
}
init(param2: Int) {
//This is good
}
func testMethod(param1: Int) {
}
func testMethod(param2: Int) {
//Compile error
}
}
答案 0 :(得分:1)
默认情况下,方法的第一个参数不是方法签名的一部分。
func testMethod(param1: Int) {}
func testMethod(param2: Int) {}
// are both called like this:
.testMethod(0)
.testMethod(0)
但是你可以使第一个参数显式化,就像它是初始化器的默认值一样:
func testMethod(param1 param1: Int) {}
func testMethod(param2 param2: Int) {}
// are called like this:
.testMethod(param1: 0)
.testMethod(param2: 0)
通过Swift约定,第一个参数名称应该是初始方法名称的一部分,如下所示:
func testMethodParam1(param1: Int) {}
func testMethodParam2(param2: Int) {}