Swift: функция быстрого доступа в структуре без инициализации - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь получить доступ к функции в структуре, как это

struct DoSomething {
    var str: String

    func processNumber(number: Int) -> String {
        return "\(number)"
    }
}

let number = DoSomething().processNumber(number: 10)
print(number)

Но я получаю эту ошибку:

Missing argument for parameter 'str' in call

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

Я буду очень признателен за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 30 апреля 2020

Вы должны инициализировать str при создании экземпляра DoSomething.

Либо назначить значение по умолчанию в структуре

struct DoSomething {

    var str: String = ""

    ....

}

let number = DoSomething().processNumber(number: 10)

Или в инициализаторе, который имеет подпись init(str : String)

let number = DoSomething(str: "").processNumber(number: 10)
0 голосов
/ 30 апреля 2020

Проблема может быть решена путем объявления str как необязательного.

struct DoSomething {
    var str: String?

    func processNumber(number: Int) -> String {
        return "\(number)"
    }
}

let number = DoSomething().processNumber(number: 10)
print(number)
0 голосов
/ 30 апреля 2020

Вы должны передать такой параметр следующим образом:

let number = DoSomething(str:"someValue").processNumber(number: 10)

Поскольку в этом случае нет () init, если вам нужен отдельный лог c do

class func processNumber(number: Int) -> String {
    return "\(number)"
}

и вызывайте как

let number = DoSomething.processNumber(number: 10)

обратите внимание, что если переменная var str: String не используется, вы не должны создавать ее либо

...