特征中的自动推断泛型类型

露西恩

我想要一个可以在某些特征中混合的通用基类。

是否有可能让mixins自动采用基类的泛型?

abstract class Base[T] {
  def foo: T = ???
  def bar(value: T): Boolean
}

trait MixinA {
  self: Base[U] => // U should be automatically bound to T of Base[T]
  def bar(value: U): Boolean = false
}
里吉斯让吉尔斯

您可以使用以下抽象类型来实现一些解决此问题的方法Base

abstract class Base[T] {
  type U <: T
  def foo: U = ???
  def bar(value: U): Boolean
}

trait MixinA {
  self: Base[_] =>
  final def bar(value: U): Boolean = false
}

REPL测试:

scala> class Impl extends Base[Int] with MixinA
defined class Impl

scala> val i = new Impl
i: Impl = Impl@7ca5cc9e

scala> val x: Int = i.foo
scala.NotImplementedError: an implementation is missing
  at scala.Predef$.$qmark$qmark$qmark(Predef.scala:225)
  at Base.foo(<console>:9)
  ... 33 elided

如您所见,编译器正确地确定了它i.fooInt(确实 Int的子类型,因此可以分配给它x(这里的例外是因为您未执行其主体)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从泛型推断类型

来自分类Dev

Swift中泛型的类型推断

来自分类Dev

泛型方法和泛型类中的类型推断

来自分类Dev

如何在MVC剃须刀中自动推断泛型类型

来自分类Dev

如何在MVC剃须刀中自动推断泛型类型

来自分类Dev

泛型类型推断的 Typescript 泛型

来自分类Dev

从嵌套类型推断泛型

来自分类Dev

Swift 泛型类型推断

来自分类Dev

类型推断:泛型,“var”

来自分类Dev

从参数推断泛型类型

来自分类Dev

从函数回调中推断泛型类型参数

来自分类Dev

是否可以在TypeScript中递归地推断泛型类型?

来自分类Dev

推断打字稿中嵌套的泛型类型?

来自分类Dev

如何在Java中推断泛型类型?

来自分类Dev

如何从Java中的泛型类型推断类?

来自分类Dev

Typescript推断泛型中的泛型

来自分类Dev

TypeScript泛型:参数类型推断

来自分类Dev

comman的C#泛型类型推断

来自分类Dev

Swift泛型类型推断扩展

来自分类Dev

Java泛型,类型推断,继承?

来自分类Dev

输入泛型推断类型的数组

来自分类Dev

推断接口上泛型的类型

来自分类Dev

推断时泛型类型丢失

来自分类Dev

FSharp:使用泛型进行类型推断

来自分类Dev

Scala方法推断的泛型类型

来自分类Dev

泛型工厂的泛型和类型推断

来自分类Dev

泛型工厂的泛型和类型推断

来自分类Dev

具有多个特征的泛型类型

来自分类Dev

为什么Scala不从泛型类型参数推断类型?