Estoy escribiendo un DSL donde el operador "+" es estrictamente numérico, como algunos otros lenguajes populares. Está cerca, pero el operador String "+" está estropeando mis conversiones implícitas. ¿Cuál es la sintaxis para desimportar a un operador de la clase String?¿Cómo deseleccionar el operador String "+" en Scala?
Para que quede más claro, en lugar de esto:
scala> var x = "2" + 3; x: java.lang.String = 23
Me gustaría obtener x: Int = 5
Imagino sólo necesito 2 cosas para que esto suceda:
- Quitar (UNIMPORT dentro de mi alcance) la definición de "+" de Cuerdas
- definir una conversión implícita de la cadena a Int
Estoy atascado en el primer paso.
Gracias
Supongo que "importar scala.Predef. {Any2stringadd => _}" funcionaría. Pero no es así. Debe haber algo que extrañé. – Eastsun
'any2stringadd' se usa cuando el lado izquierdo no admite el operador' + ', pero el lado derecho es una cadena. (Para ver esto en acción, ejecute 'scala -Xprint: typer' y ejecute' new Object + "ZZZZZ" ') Por el contrario,' "ZZZZZ" + new Object' puede usar el operador + que ya está definido en 'String', así que 'any2stringadd' no se usa. –