gpt4 book ai didi

swift - 静态变量被视为 let 常量?

转载 作者:行者123 更新时间:2023-11-28 09:42:24 25 4
gpt4 key购买 nike

我有一个包含 3 个静态变量的结构 (someUrl):

struct someUrl {
static var keywords = String()
static var someUrlStart = String()
static var someUrlEnd = String()
}

和一个带有 someUrl 类型变量的类(Url):

class Url {
var someUrlConstructor: someUrl

init(keywords: String, someUrlEnd: String, someUrlStart: String) {
self.someUrlConstructor = someUrl(someUrlStart = someUrlStart, keywords = keywords, someUrlEnd = someUrlEnd)
}

}

在尝试初始化类中的变量时,Xcode 抛出一个错误,指出 someUrlStart 是一个 let 常量。

cannot assign to value: 'someUrlStart' is a 'let' constant

到目前为止,这是我的代码中的所有内容,我不明白为什么静态变量会被视为常量。这是特定于初始化器的吗?

最佳答案

你在这里混淆了编译器。首先你的语法在你如何传递参数方面是错误的,它应该是 : 而不是 =,然后你应该删除 static 并更改参数顺序:

struct someUrl {
var keywords = String()
var someUrlStart = String()
var someUrlEnd = String()
}

class Url {
var someUrlConstructor: someUrl

init(keywords: String, someUrlEnd: String, someUrlStart: String) {
self.someUrlConstructor = someUrl(keywords: keywords, someUrlStart: someUrlStart, someUrlEnd: someUrlEnd)
}
}

或者,如果您想让它们保持静态,请完全删除参数,因为现在它们是静态变量而不是成员/实例变量:

struct someUrl {
static var keywords = String()
static var someUrlStart = String()
static var someUrlEnd = String()
}

class Url {
var someUrlConstructor: someUrl

init(keywords: String, someUrlEnd: String, someUrlStart: String) {
self.someUrlConstructor = someUrl()
}
}

编译器认为你在​​做什么(或者基本上你在写 = 时实际上在做什么)试图改变你的 someUrlEnd(和其他两个)作为初始化参数给出,它实际上是一个常量。


除了错误的语法,我没有看到 staticclass Url 的用途,只需采用 struct someUrl,它的默认初始化程序并从那里开始。一般注意事项:请将结构的第一个字母大写:SomeUrl

关于swift - 静态变量被视为 let 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43954773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com