小编fun*_*nyF的帖子

更新到Scala 2.10时清单/类型标记出现问题


我坐在一个大约10000 LoC的项目前.我必须将此项目从Scala 2.9更新到2.10.这样做得很好,但由于清单,我收到了许多弃用警告.

在使用stackoverflow和许多其他站点的搜索功能之后,我没有那么多问题.我想总结一下; 关键点是:

  1. TypeTags和ClassTag比Manifest和ClassManifest好得多.特别是你可以使用这些作为同义词(TypeTags < - > Manifests和ClassTags < - > ClassManifest)

  2. TypeTag比ClassTag更强大,ClassTag更受限制TypeTags.我的第一个问题:在这个项目中,manifest[T].erasure.getSimpleName经常使用这种方法.现在我不仅可以将其切换为,typeTag[T].runtimeClass.getSimpleName因为代码不会编译,但是classTag[T].runtimeClass.getSimpleName它会编译.这会影响语义吗?(注意:该方法erasure也已弃用;您必须使用该方法runtimeClass)

  3. 第二个问题: Scala 2.9中的清单类型检查是:manifest[T] <:< manifest[A].在Scala 2.10中,我会写这个typeOf[T] <:< typeOf[A].但是<:<被弃用了?!

  4. 我可以将TypeTag转换为ClassTag吗?即:如果我只使用清单进行类型检查(Nr.3)和名称提取(Nr.2):我能将每个Manifest/ClassManifest重命名为ClassTag吗?

scala manifest scala-2.10

4
推荐指数
1
解决办法
411
查看次数

查询的RESULTSET隐式转换

我正在使用Scala 2.10并且遇到Slick问题(普通查询,java.sql.ResultSet).如果我写像这样的查询

Q.query[String, ResultSet](query).list(rs.getString("id"))

日食会告诉我 could not find implicit value for parameter rconv: scala.slick.jdbc.GetResult[java.sql.ResultSet]

我这个问题最重要的来源(http://slick.typesafe.com/doc/0.11.2/sql.html)没有帮助.如何编写这些隐式转换?ResultSet在Slick中还有其他任何一种代表s的方式吗?

scala resultset implicit-conversion slick

1
推荐指数
1
解决办法
1985
查看次数