相关疑难解决方法(0)

从Class [T]映射到T而不进行强制转换

我想从类标记映射到以下代码行的实例:

trait Instances {
  def put[T](key: Class[T], value: T)
  def get[T](key: Class[T]): T
}
Run Code Online (Sandbox Code Playgroud)

这可以在不必解析get方法中的强制转换的情况下完成吗?

更新:

对于更普遍的情况,如何用一些Foo[T]而不是Class[T]

scala

7
推荐指数
3
解决办法
573
查看次数

如何从泛型函数返回正确的类型传递了相关的抽象类型参数

我正在尝试为以下情况编写"更好"(更惯用?)Scala代码:我有一组类,这些类将由属于并行参考案例类集的引用字段标识,如下所示:

abstract sealed class Ref(value: String)

case class ARef(value: String) extends Ref(value)
case class BRef(value: String) extends Ref(value)
case class CRef(value: String) extends Ref(value)

trait Referenced {
  type refType <: Ref
  val ref: refType
}

trait A extends Referenced { type refType = ARef }
trait B extends Referenced { type refType = BRef }
trait C extends Referenced { type refType = CRef }
Run Code Online (Sandbox Code Playgroud)

另一个类(可能会变成State monad的状态类型)将包含这些类型的列表,并提供一个函数来检索一个对象,给出它的引用.我希望这个返回值适当地输入,即给定

val aRef = ARef("my A ref")
Run Code Online (Sandbox Code Playgroud)

我希望能够打个电话:

val myA: Option[A] = context.get[A](aRef)
Run Code Online (Sandbox Code Playgroud)

并确保取回选项[A],而不仅仅是选项[参考].到目前为止,我实现这一目标的最佳尝试类似于以下内容: …

scala

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

标签 统计

scala ×2