当您想要外部值类型的延迟变异时,我正在寻找管理传递给对象的外部值类型的最佳实践。其核心目标是提供友好/传统的界面,同时更具惯用性。
我的当前代码使用UnsafeMutablePointer。看起来像这样:
struct MutableData {
var variable: Double = 1
}
struct Object
{
var variablePtr: UnsafeMutablePointer<Double>? = nil
mutating func add(data: UnsafeMutablePointer<Double>) {
self.variablePtr = data
}
mutating func mutateLater() {
self.variablePtr?.pointee = 10
}
}
var mutableState = MutableData()
var compute = Object()
compute.add(data: &mutableState.variable)
compute.mutateLater()
虽然这有效,但我担心指针所指向的外部结构的生命周期内缺乏保证。
有办法: