Я преобразовываю большой код, который объединяет строковые и перечисляемые значения. Код использовал Int
в качестве типа перечисления, и я хочу преобразовать его в правильные перечисления (предпочтительно extends Enumeration
, но trait
+ objects
также подойдет). Я хочу, чтобы компилятор либо выполнял преобразование из enum в числовое значение c, либо, по крайней мере, выдавал ошибку компилятора всякий раз, когда я пытался добавить значение enum в строку.
Несмотря на мои после того, как следующий код все еще печатает DEPTH=D0
из-за надоедливой операции по умолчанию Scala Оператор строки +:
import scala.language.implicitConversions
object Main extends App {
implicit class StringPlus(s: String) {
def + (v: Enumeration#Value): String = s + v.id.toString
}
implicit def str(v: Enumeration#Value): String = v.id.toString
val b = true
object D extends Enumeration {
val D0 = Value(100)
}
val d = D.D0
val s = "DEPTH=" + d
println(s)
}
Есть ли способ отключить строку по умолчанию +, чтобы описанная выше ситуация была обработана или обнаружена компилятор? В настоящее время я использую Scala 2.12, но при необходимости могу портировать на 2.13.