def +(other: String) = String.valueOf(self) + other
Кроме того, поскольку scala.Predef всегда находится в области видимости, это неявное преобразование всегда будет работать.
Ответ 2
Он работает из-за неявных преобразований, которые "исправляют" ошибки определенного типа, для которых были созданы преобразования. Вот дополнительная информация о механизме неявных преобразований: