Это потому, что вы случайно перегрузили метод toHTML
.Ошибка, которую вы получаете, заключается в том, что String.apply
возвращает символ с заданным индексом, поэтому вы получаете эту ошибку о Int
.
. Intelij не всегда эффективен при выделении такого родазатенение.Это хорошая идея, чтобы неявные механизмы не включались в модель предметной области, например, разделять специализированные сериализации на имплициты, как вы это делаете:
implicit object UserSerializer extends HTMLSerializer[User] {
def serialize(user: User): String = s"<div>${user.name} (${user.age} yo) <a href=${user.email}/> </div>"
}
Затем удалите все из вашего user
и, возможно, добавьтепомощник.
trait HTMLSerializer {
def toHTML: String
}
object HTMLSerializer {
// if you put this here you don't need to explicitly import it.
implicit class HTMLEnrichment[T](val value: T) extends AnyVal {
def toHTML(implicit serializer: HTMLSerializer[T]): String =
serializer.serialize(value)
}
}
Это означает, что вы можете просто получить тот же эффект, что и метод-компаньон, но вы можете сохранить все красиво отделенным, и вы не рискуете получить такие эффекты затенения.