HList에 관해서는 거의 읽을 수있는 문서가 없기 때문에 내가 찾을 수있는 대답은 우주 공간에서 나온다. 겸손한 스칼라 초보자를위한 것이다.Scala HList에서 요소를 읽는 방법?
Slick이 데이터베이스 행을 나타 내기 위해 일부를 자동 생성 할 수 있으므로 HLists가 발생했습니다. 그들은 slick.collection.heterogeneous.HList
(형태가없는 ')입니다. 예 : 이러한 행의
type MyRow = HCons[Int,HCons[String,HCons[Option[String],HCons[Int,HCons[String,HCons[Int,HCons[Int,HCons[Option[Int],HCons[Option[Float],HCons[Option[Float],HCons[Option[String],HCons[Option[String],HCons[Boolean,HCons[Option[String],HCons[Option[String],HCons[Option[String],HCons[Option[String],HCons[Option[String],HCons[Option[Int],HCons[Option[Float],HCons[Option[Float],HCons[Option[Float],HCons[Option[String],HCons[Option[String],HNil]]]]]]]]]]]]]]]]]]]]]]]]
def MyRow(a, b, c, ...): MyRow = a :: b :: c :: ... :: HNil
지금 주어진 일, 나는 하나 개의 요소, 가능하면 입력을 읽을 필요가 것입니다. 나는 그렇게 할 수 없다. 나는 누군가가 내가 그 공룡에서 특정 값을 추출하는 방법을 설명시겠습니까
row(4) // error
row._4 // error
row.toList // elements are inferred as Any
row match { case a :: b :: c :: x :: rest => x } // "Pattern type is incompatible. Expected MyRow."
row match { case MyRow(_,_,_,_,_,x,...) => x } // is not a case class like other rows
row match { HCons[Int,HCons[String,HCons[Option[String],HCons[Int,HCons[String, x]]]]] => x.head } // error
row.tail.tail.tail.tail.head // well, is that really the way??
를 시도?
......'공룡 '.... 당신은'HList'를 상당히 두려워하는 것 같습니다. –
@SarveshKumarSingh는 모르는 사람의 성격을 반영하는 의견을 내보낼 필요가 없습니다. 그 의견을 삭제 해 줄 것을 제안해도 될까요? – maasg