AView(value: Box<Double>(.nan)) を AView(value: Double.nan) に変えるだけで参照型を値型にして試せるので。Double.nan のときは変更が反映されません。Equatable でないクラス Container ↓を作って final class Container<Value: CustomStringConvertible>: CustomStringConvertible { let value: Value init(_ value: Value) { self.value = value } var description: String { value.description } }AView(value: Container<Double>(42)) でも AView(value: Container<Double>(.nan)) でも常に更新が反映されました。