在Swift中,可以在默认参数值中使用参数值吗?

时间:2018-12-27 16:17:20

标签: swift

我想做这样的事情:

func test(parameter1: Class1, parameter2: Class2 = Class2(class1: parameter1)) {

  }

在Swift中有什么方法可以做到吗?

3 个答案:

答案 0 :(得分:4)

使第二个参数为Optional,默认值为nil,如果实际上为nil,则在函数主体中进行操作。

答案 1 :(得分:1)

这是不可能的,但是您可以将parameter2设置为可选,并执行以下操作:

func test(parameter1: Class1, parameter2: Class2? = nil) {
    let param2 = parameter2 ?? Class2(class1: parameter1)
}

答案 2 :(得分:0)

那还不可能

但是您可以按照Rob所说使用可选选项。

我在操场上尝试过

class Class1 {
    var name = ""
}

class Class2 {
    var class1:Class1?
    init(class1: Class1) {
        self.class1 = class1
    }

    func printNameClass1() {
        print(class1?.name ?? "No name")
    }
}

func test(parameter1: Class1, parameter2: Class2? = nil ) {

    parameter1.name = "Camilo"

    let object2 = parameter2 ?? Class2(class1: parameter1)
    object2.printNameClass1()
}

let param1 = Class1()

test(parameter1: param1)