如何快速重载相同数据类型的初始化程序?

时间:2015-11-28 16:21:50

标签: ios swift initialization

Swift说函数是由参数类型序列和返回类型组成的类型。但初始化程序允许具有相同类型但不同的param本地/外部名称。从类型的角度来看,它如何区分这一点。或者因为它不是要传递它,它被处理完全不同于函数?

有人可以帮助我理解这个吗?

class Test {

    init(param1: Int) {

    }

    init(param2: Int) {
        //This is good
    }

    func testMethod(param1: Int) {

    }

    func testMethod(param2: Int) {
        //Compile error
    }
}

1 个答案:

答案 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) {}