abstract-type相关内容
如果我这样做: 对象父{类内部扩展可测试{类型自我
..
我在任何其他问题中都找不到答案.假设我有一个抽象超类 Abstract0,它有两个子类 Concrete1 和 Concrete1.我希望能够在 Abstract0 中定义类似 def setOption(...): Self = {...} 其中 Self 将是具体的子类型.这将允许像这样对 setOption 进行链接调用: val obj = new Concrete1.setOpti
..
scala>类 A { 类型 T (new A).f("bar"):9: 错误:类型不匹配;找到:java.lang.String("bar")必需:_1.T 其中 val _1:A(new A).f("bar")^ A 类具有抽象类型 T,但不是抽象类.创建A 的对象(如图所示)并没有定义类
..
在什么情况下抽象类型应该优先于类型参数? 解决方案 添加到我的先前关于抽象类型与参数的答案,您还有 JESSE EICHAR 最近的博文(2010 年,5 月 3 日)强调了一些主要差异: 特质 C1[A] {定义获取:Adef doit(a:A):A}性状 C2 {A型定义获取:Adef doit(a:A):A} 在C2的情况下,参数被“埋没"(作为内部抽象类型). (除了,正如r
..
我正在使用抽象类型,我想知道为什么这是无效的: A 类{}B 类扩展 A {}X 类 {type T = A}类 Y 扩展 X {覆盖类型 T = B} 看到 B
..
抽象成员方法在单例对象中是非法的 scala>对象 Foo {|def g: 整数|}def g: 整数^第 2 行:错误:只有特征和抽象类可以声明但未定义的成员 作为抽象值成员 scala>对象 Foo {|val x: 整数|}val x: 整数^第 2 行:错误:只有特征和抽象类可以声明但未定义的成员 但是抽象类型成员在单例对象中是合法的 scala>对象 Foo {|A型|}对象
..
我正在尝试把自己的头放在scala中的抽象和显式自身类型上. 让我们考虑这个例子: 我想像这样简单地为可扩展树创建基础: trait Tree { def children: Iterable[Tree] def descendants: Iterable[Tree] = { val dv = children.view; dv ++ (dv.flatMap { _.children
..
我需要一种方法来强制抽象类中的方法具有其调用对象的 concrete 类的返回类型.最常见的示例是copy()方法,我目前正在使用基于抽象类型的方法: abstract class A(id: Int) { type Self
..
在其他任何问题中我都找不到答案.假设我有一个抽象超类Abstract0,它带有两个子类Concrete1和Concrete1.我希望能够在Abstract0中定义类似的内容 def setOption(...): Self = {...} 其中Self将是具体的子类型.这样可以将调用链接到setOption,如下所示: val obj = new Concrete1.setOpti
..
Scala允许使用type关键字定义类型,这些类型通常具有不同的含义和目的,具体取决于声明的时间. 如果在对象或包对象中使用type,则需要定义类型别名,即另一种类型的简称/简称: package object whatever { type IntPredicate = Int => Boolean def checkZero(p: IntPredicate): Boole
..
我有以下简单程序,分别为类型参数和抽象类型别名定义2个相同的上限: package scala.spike.typeBoundInference object Example1 { trait Domain { } trait Impl { type DD
..
当我在Martin Odersky的 Scala编程中尝试抽象类型的Animal/Food示例时, class Food abstract class Animal { type SuitableFood
..
我想在抽象类中定义一个构造器,该构造器将创建具体的子类。 抽象类A { 类型Impl< ;: A def Construct():Impl = { val res = new Impl()//编译错误:需要类类型,但是A.this.Impl找到 / /使用res } } 执行更多初始化B类扩展A {type Impl = B} C类扩展A {type Impl =
..
我有此代码: class A extends Testable { type Self
..
假设我有一个抽象类型AA和一个具体类型XXX: trait AA { type A = XXX final type B = XXX } 在这种情况下,在任何AA子类中,类型A和B都不能被覆盖,因此关键字final看起来是完全多余的.这句话正确吗? 解决方案 很难证明它们是完全相同的,但是我要指出的是,它们减去了一些无用的怪癖. 无用的怪癖 首先也是最明显的是
..
如果我这样做: object Parent { class Inner extends Testable {type Self
..
我尝试使用前面的问题的答案来实施一个小图库。我们的想法是将图形看作colections,顶点包装集合元素。 我想使用抽象类型来表示Vertex和Edge类型(因为类型安全)和我想使用类型参数来表示集合元素的类型(因为我想在实例化时很容易地定义它们)。然而,当尝试最基本的示例I可以想一想,我遇到了编译错误。下面是例子: 包图 抽象类GraphKind [T] { type V
..