无形代码错误:inst.type 的表达式不符合

Error in shapeless code: Expression of inst.type does not conform

我正在看无形的书,并按照例子去做。
第四章有一个例子,如何读取HList的第二个元素。

代码

import shapeless.{HList, ::, HNil}


trait Second[L <: HList] {

  type Out

  def apply(value: L): Out

}

object Second {

  type Aux[L <: HList, O] = Second[L] {type Out = O}

  def apply[L <: HList](implicit inst: Second[L]): Aux[L, inst.Out] =
    inst
}


object Main {

  def main(args: Array[String]): Unit = {
  }

}

编译器抱怨:

我把书上的代码复制粘贴到一本都配置不出来,哪里出错了。

请帮我找一下。

这不是编译器问题,而是您的 IDE 抱怨(是 IntelliJ 吗?)。

如果你编译 (Ctrl+Shift+F9 / ⌘+Shift+F9) 或 运行 (Ctrl+Shift+F10 / ⌘+Shift+F10) 你的代码你会看到它编译得很好.

您应该习惯一些有效的 Scala 代码被 IDE 错误下划线标记为红色。

这是说服你的方法 IDE:

def apply[L <: HList, O](implicit inst: Second.Aux[L, O]): Aux[L, O] = inst