定义了 getter 和 setter 且没有后备变量的变量叫啥?

Posted

技术标签:

【中文标题】定义了 getter 和 setter 且没有后备变量的变量叫啥?【英文标题】:What do you call a variable that has a getter and setter defined, with no backing variable?定义了 getter 和 setter 且没有后备变量的变量叫什么? 【发布时间】:2020-04-07 21:57:03 【问题描述】:

当你用getter和setter定义一个变量/属性时,它叫什么,这样语言就不会自动生成一个支持变量?

例如在 Swift 中,我们可以定义一个不创建支持变量的 modalViewController 属性:

extension MyViewController 
    var modalViewController: UIViewController? 
        get  return self.presentedViewController 
        set  self.present(newValue, animated: true) 
    

描述modalViewController 属性的正确术语是什么?


我知道如果它只是可获取的,它会被称为计算属性

extension Int 
    var isEven: Bool  
        get  return self % 2 == 0 
    

但是,我正在寻找既可设置又可获取的事物的术语。


我正在寻找一个术语的原因是我想问一个与这些类型的属性相关的问题,并且想使用通用的、明确的语言。我认为这将被称为 虚拟属性,但它似乎不是 virtual has a different meaning in OOP 的正确名称。

【问题讨论】:

【参考方案1】:

即使他们也有一个 setter,Swift(至少)calls these "computed properties"(强调):

除了存储属性之外,类、结构和枚举还可以定义计算属性,它们实际上并不存储值。相反,它们提供了一个 getter 和一个可选的 setter 来间接检索和设置其他属性和值。

【讨论】:

以上是关于定义了 getter 和 setter 且没有后备变量的变量叫啥?的主要内容,如果未能解决你的问题,请参考以下文章

自动实现的 getter 和 setter 与公共字段

C#自定义getter / setter没有私有变量

在 PyGetSetDef 中使用闭包来重用属性 getter-setter

scalagetter和setter

为无父局部变量定义 Setter/Getter:不可能?

Python 抽象 setter 和 getter