scala - 是否可以将类型参数的类型参数传播到 Scala 中的参数化类?

标签 scala types typeclass

假设我有一个特征 Foo[A, B] .

我想定义一个类 Bar ,参数化为 Foo并重复使用 Foo Bar 中的类型参数方法。如下所示(此代码段无法编译):

trait Bar[Foo[A, B]] {
  def doSmth[C](A => C): C
}

有什么方法可以实现类似的功能并且在 Bar 中仍然只有一个类型参数宣言?

附言如果有人可以为所描述的内容建议正确的术语,那也会很棒。

最佳答案

不确定,但也许这是您想去的地方附近的某个地方。

trait Foo[A,B]
trait Bar[A] { self: Foo[A,_] =>
  def doSmth[C](atoc: A => C): C
}

或者,使用类型别名。
trait Foo[A,B] {type FooA = A}
trait Bar { self: Foo[_,_] =>
  def doSmth[C](atoc: FooA => C): C
}

这意味着 Foo当您有 Bar 时需要在混合。

关于scala - 是否可以将类型参数的类型参数传播到 Scala 中的参数化类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725584/

相关文章:

c# - 检查对象的类型是否来自特定的命名空间

haskell - 无法推断(显示 t)

scala 奇怪的符号 "_@"意思

scala - 为什么 Scala 元组的索引是从 1 开始的?

scala - 如何在 Scala 中为更高级的类型使用通配符?

PostgreSQL 将列从 inet 转换为文本

javascript - Python 版本的 JavaScript ES6 符号

haskell - 自定义 Ord 实例卡在列表上

haskell - 为异构操作创建类型类时出现问题

scala - Internet 关闭时不会调用 TCP IO Akka 套接字连接关闭