Supponiamo che io sono questo:Esiste un modo per controllare quale conversione implicita sarà utilizzata come predefinita?
class String2(val x:String) {
def *(times:Int) : String = {
val builder = new StringBuilder()
for(i <- 0 until times) {
builder.append(x)
}
builder.toString()
}
}
ora se aggiungo questa implicita:
implicit def gimmeString2(y:String) = new String2(y)
otterrò un errore di compilazione perché stringWrapper aggiunge anche questa implicita. C'è un modo per dire al compilatore "ignorare altri impliciti, usare questo", in modo da non dover istanziare un oggetto String2
e lavorarci sopra?
Ammetto che il codice di esempio potrebbe non essere il più appropriato (per questa domanda), ma penso che lo farà.
Eventuali duplicati: http://stackoverflow.com/questions/1339148/avoiding-implicit-def-ambiguity-in-scala –
non credo che sia un duplicato L'autore di quella domanda voleva mantenere entrambi gli impliciti. Ne voglio solo uno. – Geo
C'è un metodo molto simile, se non identico, a quello già disponibile in RichString. Se si desidera utilizzare il metodo, è possibile utilizzare la tecnica di importazione a.b. {c => _} per nascondere c dove c è il nome del metodo implicito. –