Supongamos que tengo esto:¿Hay alguna manera de controlar qué conversión implícita será la predeterminada utilizada?
class String2(val x:String) {
def *(times:Int) : String = {
val builder = new StringBuilder()
for(i <- 0 until times) {
builder.append(x)
}
builder.toString()
}
}
ahora si añado esta implícita:
implicit def gimmeString2(y:String) = new String2(y)
que se producirá un error de compilación porque stringWrapper también añade esta implícita. ¿Hay alguna manera de decirle al compilador "ignorar otras implicidades, usar esto", para que no tenga que instanciar un objeto String2
y trabajar en eso?
Admito que el código de ejemplo puede no ser el más apropiado (para esta pregunta), pero creo que sí.
duplicado posible: http://stackoverflow.com/questions/1339148/avoiding-implicit-def-ambiguity-in-scala –
no creo que es un duplicado. El autor de esa pregunta quería mantener ambas implicaciones. Solo quiero uno. – Geo
Hay un método muy similar, si no idéntico, al anterior ya disponible en RichString. Si desea que se use su método, quizás pueda utilizar la técnica import a.b. {c => _} para ocultar c donde c es el nombre del método implícito. –