1

我正在尝试访问这样的结构中的功能

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

你们中的任何人都知道如何访问结构中的函数。

我会非常感谢你的帮助。

4

3 回答 3

1

可以通过将 声明str为可选来解决该问题。

struct DoSomething {
    var str: String?

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

let number = DoSomething().processNumber(number: 10)
print(number)
于 2020-04-30T18:21:45.050 回答
1

你应该像这样传递一个参数

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

因为在这种情况下没有()init ,如果你需要它一个单独的逻辑做

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

并打电话给

let number = DoSomething.processNumber(number: 10)

请注意,如果 varvar str: String 没有任何用途,您也不应该创建它

于 2020-04-30T18:16:16.553 回答
1

您必须str在创建DoSomething.

在结构中分配一个默认值

struct DoSomething {

    var str: String = ""

    ....

}

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

或者在具有签名的初始化程序中init(str : String)

let number = DoSomething(str: "").processNumber(number: 10)
于 2020-04-30T18:16:27.143 回答