Я думаю, у меня есть обходной путь.
Если я создаю RichString из аргумента String, неявное преобразование происходит из RichString в Int с использованием неявного метода, который я предоставляю (это работает для 2.7.x и 2.8). Если я удаляю неявное, я получаю ошибку типа.
object Imp {
implicit def string2Int(rs: RichString): Int = rs.toInt
def f(i: Int) = i
def main(args: Array[String]) {
val n: Int = f(new RichString("666"))
println(n)
}
}
Я все еще не понимаю, почему оба имплицита вошли в область видимости и столкнулись, когда я предоставил неявный, и почему почему Predef не попал в контекст, когда я не предоставил один для String для Int. Я полагаю, что вопрос о неявном преобразовании из String в Int остается открытым.