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

时间:2017-10-16 07:35:28

标签: scala shapeless

我正在读这本书的形状,并按照例子 在第4章,有一个例子,如何阅读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 = {
  }

}

编译器抱怨:

enter image description here

我将第一本书中的代码复制并粘贴到一起,无法将其配置出来,错误在哪里。

请帮我找到它。

1 个答案:

答案 0 :(得分:1)

这不是编译器,而是你的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
相关问题