fro*_*mad 0 static-variables swift
我有一个包含3个静态变量的struct(someUrl):
struct someUrl {
static var keywords = String()
static var someUrlStart = String()
static var someUrlEnd = String()
}
Run Code Online (Sandbox Code Playgroud)
以及一个类型为someUrl的类(Url):
class Url {
var someUrlConstructor: someUrl
init(keywords: String, someUrlEnd: String, someUrlStart: String) {
self.someUrlConstructor = someUrl(someUrlStart = someUrlStart, keywords = keywords, someUrlEnd = someUrlEnd)
}
}
Run Code Online (Sandbox Code Playgroud)
在尝试初始化类中的变量时,Xcode抛出一个错误,指出someUrlStart是一个let常量.
无法赋值:'someUrlStart'是'let'常量
到目前为止,这是我在代码中所拥有的全部内容,而且我不明白为什么静态var将被视为常量.这是否特定于初始化器?
你在这里混淆编译器.首先你的语法在传递参数方面是错误的,它应该是:代替=,然后你应该删除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)
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果你想保持它们静态删除参数,因为现在它们是静态变量而不是成员/实例变量:
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()
}
}
Run Code Online (Sandbox Code Playgroud)
编译器认为你正在做的事情(或者基本上你正在写的事情=)试图改变someUrlEnd你作为初始化参数给出的(和其他两个),这实际上是一个常量.
除了错误的语法之外,我没有看到static或者用于它class Url,只需要使用struct someUrl它的默认初始化程序并从那里开始.一般说明:请大写结构的第一个字母:SomeUrl.
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |