Как переопределить операции для тегов типа Scala - PullRequest
1 голос
/ 20 апреля 2020

Предположим, у меня есть помеченный тип, например: Как я могу переопределить оператор +, чтобы возвращаемое значение для двух томов было объемом?

Я попытался добавить новую черту, например. VolumeOperations, который переопределяет + для объектов типа Volume. Но я не смог реализовать + без использования .isInstanceOf[Volume].

Можно ли добиться этого без приведения?

1 Ответ

2 голосов
/ 20 апреля 2020

Вы можете определить метод расширения

def Volume(value: Double): Volume = tag[VolumeTag][Double](value)

implicit class VolumeOp(v: Volume) {
  //def +(v1: Volume): Volume = Volume(v + v1)
  def plus(v1: Volume): Volume = Volume(v + v1)
}

Но tag фактически является приведением.

...