我有以下扩展类,将扩展类添加myAppend到任何方法SeqLike。
implicit class WithAppend[A, R](s: SeqLike[A, R]) extends AnyVal {
def myAppend(i: A)(implicit cbf: CanBuildFrom[R, A, R]): R = s :+ i
}
Run Code Online (Sandbox Code Playgroud)
如何将该代码移植到Scala 2.13并保留类似的性能特征?如果扩展类可以保持AnyVal
我尝试过的几件事:
class Extends1[R, S <: IsSeq[R]](c: R, isSeq: S) {
def myAppend(a: isSeq.A): R = (isSeq(c) :+ a).asInstanceOf[R]
}
Run Code Online (Sandbox Code Playgroud)
但是asInstanceOf令人失望-它甚至安全吗?
我可以做:
class Extends3[S[_], A](c: SeqOps[A, S, S[A]]) {
def myAppend(a: A): S[A] = c :+ a
}
Run Code Online (Sandbox Code Playgroud)
但是现在我们被限于表单的集合,S[A]而Scala 2.12代码可以接受任何形式R。
我想将 anorm 依赖项导入到我的 Scala Play 框架工作项目中,但它不支持我当前的 Scala 版本。我该怎么办?
libraryDependencies += "com.typesafe.play" %% "anorm" % "2.3.9"
Run Code Online (Sandbox Code Playgroud)
显示错误:
sbt.librarymanagement.ResolveException:未解决的依赖项:com.typesafe.play#anorm_2.13;2.3.9:未找到
我正在将软件从Scala 2.12.8升级到Scala 2.13,并发现根据许多指南(如本指南)已删除了MutableList集合(scala.collection.mutable.MutableList )。
例如,本指南说这是一个已弃用的集合,所以才删除了它,但是在以前的版本中我找不到该类的任何弃用。
“删除了不推荐使用的集合(MutableList,immutable.Stack等)”
我还首先升级到2.12.9(在2.13.0之前的最新版本),以检查是否有任何不推荐使用的注释,以提供有关使用什么的建议,但是在此版本中,该集合也没有被弃用。
我搜索了这个问题,但找不到很好的答案。这个问题对我和将来的升级都将是有益的。
在Scala 2.13中,我应该使用什么代替MutableList?