【问题标题】:Need clarification regarding computed properties [duplicate]需要澄清计算属性[重复]
【发布时间】:2017-08-18 03:51:36
【问题描述】:

我目前正在从 Java/Node.js 背景学习 Swift。在阅读了计算属性之后,我想知道以下两种用途之间的区别:

private var _privateVariable: String = "test"

var testVariable {
   return _privateVariable
}

var testVariable {
   get{
      return _privateVariable
   }
}

本质上,使用带有get 关键字的getter 与在原始变量声明中简单地返回另一个变量之间的用法有什么区别?

【问题讨论】:

  • 这在The Swift Programming Language 书籍的Computed Properties 部分的“只读计算属性”部分中进行了介绍。 “您可以通过删除 get 关键字及其大括号来简化只读计算属性的声明”
  • 你可以这样做,顺便说一句:public private(set) publicallyReadablePrivatelyMutableVariable = foo
  • @Alexander 但这不是计算属性。
  • @rmaddy 我知道,但人们经常使用计算属性将公共 getter 公开给私有存储属性,不知道存储属性可以是公共的,但可以使用私有 setter

标签: swift


【解决方案1】:

完全没有区别。这只是一个捷径。

当你写作时

var testVariable {
   get{
      return _privateVariable
   }
}

你可以在任何时候添加setter:

var testVariable {
   set{
      _privateVariable = newValue
   }
   get{
      return _privateVariable
   }
}

当您不需要 setter 时,另一种情况有助于缩短代码。

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 2012-07-05
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2011-11-09
    • 2012-07-18
    相关资源
    最近更新 更多