我在我的结构中有一个名为labelColors的惰性变量:
lazy var _labelColors: LabelType = { return url.getTagColors() }()
var labelColors : LabelType {
mutating get { return _labelColors }
set { _labelColors = newValue }
}
它应该只在第一次真正需要它的时候调用它的值。
let redFilesOnly = files.filter({ $0.labelColors.isColorSet(color: TagColors.red) })
但是错误是“Cannot use mutating getter on immutable value:'$0'是不可变的”。但是我如何使用getter函数,它被定义为懒惰的,所以它会改变它的值?
1条答案
按热度按时间vngu2lb81#
这个问题不是关于结构或惰性定义。在
files.filter({ $0.labelColors.isColorSet(color: TagColors.red) })
,迭代结构中,你有一个let
变量($0
在这里是一个let),let常量不能被修改,所以你会得到这个错误消息。要修复这个问题,请使用: