Struct Swift 3:如何将所有结构属性设置为零
是否有更好的方法将所有结构属性设置为nil,而不是手动将每个属性设置为nil 如果我有一个Hello结构Struct Swift 3:如何将所有结构属性设置为零,struct,swift3,Struct,Swift3,是否有更好的方法将所有结构属性设置为nil,而不是手动将每个属性设置为nil 如果我有一个Hello结构 struct Hello { var salutation: String? var name: String? } let hello = Hello(salutation: "Mr.", name: "James") 目前,我正在执行此操作以重置值: func removeAll() { salutation = nil name = nil }
struct Hello {
var salutation: String?
var name: String?
}
let hello = Hello(salutation: "Mr.", name: "James")
目前,我正在执行此操作以重置值:
func removeAll() {
salutation = nil
name = nil
}
我正在寻找一种更好的方法,尤其是当结构很大的时候
我看到一些使用镜像的建议,但出现错误“无法分配给属性:“$0”是不可变的”
谢谢你的帮助 用新实例替换结构实例。例如:
var hello = Hello(salutation: "Mr.", name: "James")
// ... use it for a while ...
hello = Hello() // bingo!
所有可选属性现在都重置为nil
您甚至可以在Hello中执行此操作,用干净的副本替换self
:
struct Hello {
var salutation: String?
var name: String?
mutating func removeAll() {
self = Hello()
}
}
var hello = Hello(salutation: "Mr.", name: "James")
// ... use it for a while ...
hello.removeAll() // bingo
将结构实例替换为新实例。例如:
var hello = Hello(salutation: "Mr.", name: "James")
// ... use it for a while ...
hello = Hello() // bingo!
所有可选属性现在都重置为nil
您甚至可以在Hello中执行此操作,用干净的副本替换self
:
struct Hello {
var salutation: String?
var name: String?
mutating func removeAll() {
self = Hello()
}
}
var hello = Hello(salutation: "Mr.", name: "James")
// ... use it for a while ...
hello.removeAll() // bingo
嗨,马特,在操场上一切正常,但在Xcode中,我得到了警告:
可选类型的值Hello?没有打开包装;你是想用它吗!或者?
使用“!”安全吗在这里我添加了变异函数,就像你的例子一样。我不知道你的“在Xcode内”代码是什么样子。我向你保证,我所说的不会导致“可选类型<代码>你好?代码>”,所以这一定是你自己添加的一些复杂因素。是的,我猜可能是这样。嗨,马特,在操场上,这很好,但在Xcode中,我得到警告:<代码>可选类型的值你好?没有打开包装;你是想用它吗!或者?使用“!”安全吗在这里我添加了变异函数,就像你的例子一样。我不知道你的“在Xcode内”代码是什么样子。我向你保证,我所说的不会导致“可选类型<代码>你好?代码>”,所以这一定是你自己添加的一些复杂因素。是的,我猜可能是这样的。