如果我们可以创建只读的Somethig计算属性,我有点困惑:
extension ToMyClass {
private(set) var isEmpty: Bool {
return head == nil
}
}
尝试创建时遇到以下错误:
error: 'private(set)' modifier cannot be applied to read-only properties
答案 0 :(得分:5)
您正在尝试为计算属性设置修改器,该属性始终为只读
以下代码取自:The Swift Programming Language (Swift 4)
struct TrackedString {
private(set) var numberOfEdits = 0
var value: String = "" {
didSet {
numberOfEdits += 1
}
}
}
它应该是存储属性
答案 1 :(得分:1)
我遇到了同样的错误,但原因完全不同。我的代码是这样的:
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
使属性不可变,这导致了问题。