加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何从Scala HList读取元素?

发布时间:2020-12-16 08:45:54 所属栏目:安全 来源:网络整理
导读:很少有关于HLists的可读文档,我在SO上找到的答案来自外太空,对于一个不起眼的 Scala初学者. 我遇到了HLists,因为Slick可以自动生成一些来表示数据库行.它们是slick.collection.heterogeneous.HList(不是无形的’). 例: type MyRow = HCons[Int,HCons[String
很少有关于HLists的可读文档,我在SO上找到的答案来自外太空,对于一个不起眼的 Scala初学者.

我遇到了HLists,因为Slick可以自动生成一些来表示数据库行.它们是slick.collection.heterogeneous.HList(不是无形的’).
例:

type MyRow = HCons[Int,HCons[String,HCons[Option[String],HCons[Int,HCons[Option[Int],HCons[Option[Float],HCons[Boolean,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,x]]]]] => x.head }  // error
row.tail.tail.tail.tail.head  // well,is that really the way??

有人可以解释我如何从恐龙中提取特定值吗?

解决方法

我希望你的row(0)查找工作基于 HList API doc for apply.这是我尝试使用Slick 3.1.1的一个例子:

scala> import slick.collection.heterogeneous._
import slick.collection.heterogeneous._

scala> import slick.collection.heterogeneous.syntax._
import slick.collection.heterogeneous.syntax._

scala> type MyRow = Int :: String :: HNil
defined type alias MyRow

scala> val row: MyRow = 1 :: "a" :: HNil
row: MyRow = 1 :: a :: HNil

scala> row(0) + 99
res1: Int = 100

scala> val a: String = row(1)
a: String = a

如果那不起作用,你能否分享你看到的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读