Swift说函数是由参数类型和返回类型的序列组成的类型。但是初始化器允许具有相同的类型,但具有不同的参数本地/外部名称。从类型的角度来看,它如何区分这一点。还是由于不打算将其传递给他人,所以将其与功能完全不同吗?
有人可以帮我理解吗?
class Test {
init(param1: Int) {
}
init(param2: Int) {
//This is good
}
func testMethod(param1: Int) {
}
func testMethod(param2: Int) {
//Compile error
}
}
最佳答案
默认情况下,方法的第一个参数不属于方法签名。
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) {}
关于ios - 相同数据类型的快速重载初始化程序如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33973554/