가 나는 toBarList 기능은 컴파일되지 않습니다이 코드스칼라 Implicits 컴파일 오류
case class Foo(x: Int)
case class Bar(y: Int)
object Foo {
implicit def toBar(f: Foo) : Bar = { Bar(f.x) }
implicit def toBarList(fl: List[Foo]) : List[Bar] = {fl.map{x: Bar => x}}
을 썼다.
<console>:17: error: type mismatch;
found : Bar => Bar
required: Foo => ?
implicit def toBarList(fl : List[Foo]) : List[Bar] = { fl.map{x : Bar => x}}
그러나 여기서 implicits 시스템이 실행되지 않아야합니까? 컴파일러는 함수가 Bar를 기대하지만 Foo를 전달하는 오류가 있음을 감지해야합니다. 이제는 Foo를 Bar로 변환하는 암시 적 함수가 이미 있으므로이를 사용해야하고 모든 것이 작동해야합니다.
왜 이렇게 컴파일되지 않았습니까?
,'{fl.map {X : 바 => B}}', 아마 당신이 의미하는'{fl.map {X : Bar => x}}'또는'{fl.map {b : Bar => b}}'일 수 있습니다. – dveim