Я пытаюсь создать тип, который можно будет обновлять только один раз. В попрошайничестве объект имеет значение, и он будет генерировать исключение, если к нему обращаются. впоследствии пользователь может обновить объект, но другие обновления будут проигнорированы. это для того, чтобы иметь вид объекта состояния, который обновляет свое состояние один раз и во время потока, игнорирует фактический имп метода обновления, но я получаю ошибки компиляции варианта, контравариантный ... есть ли способ решить Это?Создание объекта Single updater
case class EmptyValueException(message: String = "empty value") extends RuntimeException(message)
trait SingleUpdate[+T] {
def get: T
}
case object EmptyValue extends SingleUpdate[Nothing] {
def get: Nothing = throw EmptyValueException()
}
case class HasValue[+T](value: T) extends SingleUpdate[T] {
def get: T = value
}
object SingleUpdater {
def apply[T]() = new SingleUpdater[T]()
}
class SingleUpdater[+T] {
var single: SingleUpdate[T] = EmptyValue
def get = single.get
def update[T](value: T) = single = HasValue[T](value)
}