【问题标题】:Swift: What does this error: 'private(set)' modifier cannot be applied to read-only properties mean?斯威夫特:这个错误:'private(set)'修饰符不能应用于只读属性是什么意思?
【发布时间】:2018-01-21 10:40:24
【问题描述】:

如果我们可以创建只读的计算属性,我有点困惑:

extension ToMyClass {
    private(set) var isEmpty: Bool {
        return head == nil
    }
} 

在尝试创建时出现以下错误:

 error: 'private(set)' modifier cannot be applied to read-only properties

【问题讨论】:

    标签: swift computed-properties


    【解决方案1】:

    您正在尝试为计算属性设置修改器,该属性始终是只读的

    以下代码取自:The Swift Programming Language (Swift 4)

    struct TrackedString {
        private(set) var numberOfEdits = 0
        var value: String = "" {
            didSet {
                numberOfEdits += 1
            }
        }
    }
    

    应该是存储属性

    【讨论】:

    • 非常感谢。我真的错过了“计算属性,它始终是只读的”
    【解决方案2】:

    我遇到了同样的错误,但原因完全不同。我的代码是这样的:

    protocol Foo {
        var bar: String { get }
    }
    class Baz: Foo {
        private (set) let bar: String // Error
        
        init(bar: String) {
            self.bar = bar
        }
    }
    

    我只需要改变:

    private (set) let bar: String
    

    到:

    private (set) var bar: String
    

    let 使属性不可变,这会导致问题。

    【讨论】:

      猜你喜欢
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      相关资源
      最近更新 更多