如何使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"
    }
}

这就是你所有的代码吗?