Swift: функция быстрого доступа в struct no init

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

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

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

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


person user2924482    schedule 30.04.2020    source источник
comment
Может ты хочешь static func?   -  person jtbandes    schedule 30.04.2020


Ответы (3)


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

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

struct DoSomething {

    var str: String = ""

    ....

}

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

Или в инициализаторе с подписью init(str : String)

let number = DoSomething(str: "").processNumber(number: 10)
person vadian    schedule 30.04.2020

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

struct DoSomething {
    var str: String?

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

let number = DoSomething().processNumber(number: 10)
print(number)
person Vinayaka S Y    schedule 30.04.2020

Вы должны передать такой параметр, как

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

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

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

и позвони как

let number = DoSomething.processNumber(number: 10)

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

person Sh_Khan    schedule 30.04.2020