HListに関する読解可能なドキュメントはほとんどなく、私がSO上に見つけることができる答えは、宇宙から来て、謙虚なScala初心者のためです。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
現在、これらの行の1つを与えられ、私は可能な場合は入力された、一つの要素を読み取るために必要があると思います。私はちょうどそれを行うことはできません。試しました
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'sのことがかなり恐ろしいですね。 –
@SarveshKumarSinghあなたが知らない人の性格を反映した意見を出す必要はありません。あなたはそのコメントを削除することを提案できますか? – maasg