Почему вывод типа 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 определения, то он компилируется.

Ответы на вопрос(1)

Ваш ответ на вопрос