Можно ли в Swift использовать значение параметра в значении параметра по умолчанию? - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу сделать что-то подобное:

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

  }

Есть ли способ сделать это в Swift?

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Это невозможно, но вы можете сделать parameter2 необязательным и сделать что-то вроде этого:

func test(parameter1: Class1, parameter2: Class2? = nil) {
    let param2 = parameter2 ?? Class2(class1: parameter1)
}
0 голосов
/ 27 декабря 2018

Это пока невозможно

, но вы можете использовать дополнительную опцию, как говорит Роб.

Я пробовал это на детской площадке:

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)
0 голосов
/ 27 декабря 2018

Сделайте второй параметр необязательным с нулевым значением по умолчанию и делайте то, что вы делаете в теле функции, если на самом деле он равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...