¿Hay algo que tengo mal en el siguiente fragmento: -conversión implícita de String a int en Scala 2,8
object Imp {
implicit def string2Int(s: String): Int = s.toInt
def f(i: Int) = i
def main(args: Array[String]) {
val n: Int = f("666")
}
}
me sale el siguiente desde el 2,8 compilador: -
información: Compilación completado con 1 error y 0 advertencias
Información: 1 error
Información: 0 advertencias
... \ Scala-2,8-tests \ src \ Imp.scala
error: error: la línea (4) error: tipo MISM atch;
encuentran: String
requerida: {val Toint:?}
Tenga en cuenta que las conversiones implícitas no son aplicables porque son ambiguas:
tanto string2Int método en el objeto Imp del tipo (s: String) Int
y el método augmentString en el objeto Predef de tipo (x: String) scala.collection.immutable.StringOps
son posibles las funciones de conversión de String a? {val toInt:?}
implicit def string2Int (s: String): Int = s.toInt
Gracias por la respuesta rápida, desafortunadamente el implícito de Predef no entra en juego si comento mi implícito anterior, solo parece estar en el alcance cuando aparece la competencia ;-) La opción toInt está bien, pero Estaba explorando una serie de conversiones de String en un método determinado por un parámetro de tipo, uno de ellos es String, es decir, no-op. –
Tendré que probar esto mañana con 2.8. ¡Utilizo la conversión 'toInt' en el código de producción (es decir, usando 2.7) todo el tiempo! –