내가 스칼라에서 this class이 : 이제스칼라 타입 유추가 여기서 실패하는 이유는 무엇입니까?
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)
왜 타입이 String
으로 추론되지 않는 오류
error: missing parameter type for expanded function ((x$1) => x$1.trim)
을 제공, 컴파일되지 않습니다? 이 오류로 인해 암시 적 변환이 실행되는 것 같습니다 (그렇지 않으면 "tap
은의 멤버가 아닙니다"라는 줄을 따라 오류가 발생합니다). 그리고 변환은 Tapper[String]
이어야하며 이는 인수의 유형이 String => Unit
(또는 (String => Unit)*
)임을 의미합니다.
흥미로운 점은 내가 tap
중 하나를 주석으로 정의하면 컴파일된다는 것입니다. tap
의
우수한 아이디어, 감사합니다! 다르게 이름을 지어야한다고 생각했습니다. –
당신은 빠르게 새 다니엘이되고 있습니다, 제이슨! –
@oxbow 더 나은 점은, 그는 종종 스펙을 인용하는데, 이것은 좋은 것입니다. –