У меня этот класс в Scala:
object Util {
  class Tapper[A](tapMe: A) {
    def tap(f: A => Unit): A = {
      f(tapMe)
      tapMe
    }
    def tap(fs: (A => Unit)*): A = {
      fs.foreach(_(tapMe))
      tapMe
    }
  }
  implicit def tapper[A](toTap: A): Tapper[A] = new Tapper(toTap)
}
Теперь,
"aaa".tap(_.trim)
не компилируется, выдавая ошибку
ошибка: отсутствует тип параметра для расширенной функции ((x $1) = > x $1.trim)
Почему тип не выводится как String? Из ошибки кажется, что неявное преобразование действительно срабатывает (в противном случае ошибка будет по линиям "tap не является членом класса String" ). И кажется, что преобразование должно быть в Tapper[String], что означает, что тип аргумента String => Unit (или (String => Unit)*).
Интересно, что если я прокомментирую определение из tap, тогда оно компилируется.
