繁体   English   中英

如何在计算属性上设置值

[英]How to set a value on computed property

我想为字典类型的计算属性中的键设置一个值。 我想做这样的事情:

class Foo {
    var dict: [String: String] {
        dict["a"] = "b"
    }
}

但是,这不能编译。

无法通过下标分配:“ dict”是仅获取属性

我可以做这样的事情,但是有点冗长:

class Foo {
    var values: [String: String] {
        var tempValues = [String: String]()
        tempValues["a"] = "b"
        return tempValues
    }
}

有更好的方法吗? 对于上下文,我要实现的是在默认情况下将dict设为基类中的空[String: String]() ,当我覆盖子类中的属性时,我想为所述字典分配值。

语法

var dict: [String: String] {
    dict["a"] = "b"
}

是的简写形式

var dict: [String: String] {
    get {
        dict["a"] = "b"
    }
}

表示只读属性。

您需要添加set

var dict: [String: String] {
    get {
      return [:]
    }
    set {
      dict["a"] = "b"
    }
}

但是要小心,当您自己调用setter时,您很容易陷入无限循环(在此示例中就是如此)。

实际上,这种计算属性仅在要映射另一个值时才有用。

当我重写子类中的属性时,我想为所述字典分配值。

嗯...就做吧:

class A {
    var dict: [String: String] {
        return [:]
    }
}

class B: A {
    override var dict: [String : String] {
        return ["Hello":"Hi"]
    }
}

您是否忘记了override关键字?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM