如何使swift协议中的此可设置属性正常工作
我在操场上有这样的代码:如何使swift协议中的此可设置属性正常工作,swift,Swift,我在操场上有这样的代码: protocol SettableName { var name: String {get set} } struct SettableNameImpl: SettableName { var actualName: String? var name: String { get { if let name = actualName { return name
protocol SettableName {
var name: String {get set}
}
struct SettableNameImpl: SettableName {
var actualName: String?
var name: String {
get {
if let name = actualName {
return name
} else {
return ""
}
}
set (newName) {
self.actualName = newName
}
}
}
struct Something {
var settable: SettableName
func setName(name: String) {
settable.name = name <-- "cannot assign to result of this expression"
}
}
协议SettableName{
变量名称:字符串{get set}
}
结构SettableNameImpl:SettableName{
变量实际名称:字符串?
变量名称:String{
得到{
如果让name=actualName{
返回名称
}否则{
返回“”
}
}
集合(新名称){
self.actualName=newName
}
}
}
构造某物{
变量settable:SettableName
func集合名称(名称:字符串){
settable.name=name通过在Something
中更改settable的name属性,您正在更改Something
本身的值,这就是为什么mutating
关键字必须放在setName函数之前的原因。希望我足够清楚
struct Something {
var settable: SettableName
mutating func setName(name: String) {
settable.name = name // "error is gone now"
}
}
这就是你所有的代码吗?