我正在阅读这段代码很长一段时间.我把它键入REPL,它也可以.
但我不知道这里发生了什么.为什么以及如何工作!
import shapeless._ case class Size[L <: HList](get : Int) object Size { implicit val hnilSize = Size[HNil](0) implicit def hconsSize[H,T <: HList](implicit tailSize: Size[T]) = Size[H :: T](1 + tailSize.get) def apply[L <: HList](l : L)(implicit size: Size[L]) : Int = size.get } Size(1 :: "Foo" :: true :: HNil)
有人可以一步一步地解释这一点,并帮助我理解这里发生了什么.