type-bounds

    5热度

    2回答

    我有一个F-界类型Sys: trait Sys[S <: Sys[S]] 和一些特征,其以它为类型参数: trait Foo[S <: Sys[S]] 假设我有一个方法是 def invoke[S <: Sys[S]](foo: Foo[S]) =() 假设我有一个模型更新型的:用Foo调用DA子类型它带有一个Foo: sealed trait Update case class O

    0热度

    1回答

    下面的代码。 我的期望是,T必须是B型或A,所以打电话给lowerBound(new D)可能不应该编译(?)。类似的实验与上限给我预期typecheck错误。 感谢您的提示。 object varianceCheck { class A { override def toString = this.getClass.getCanonicalName }

    1热度

    1回答

    我想知道是否可以将实际的子例程放在类型绑定过程的后面,并将类型定义放在不同的文件中。 EG: 文件: Module TypeDef Type :: Test Integer :: a,b,c contains Procedure, Pass, Public :: add => SubAdd End Type Type(Test) :: Test Interfa

    2热度

    1回答

    Scala代码: class Cat[T] { def meow[K <: T] = "" } class Cat[-T] { def meow[K <: T] = "" } 它们可以被编译。 但当T是协方差,下面的代码不能被编译: class Cat[+T] { def meow[K <: T] = "" } 编译器打印: error: covar

    3热度

    1回答

    我有一个class Bar[T <: Foo]。 Bar[_ <: Foo]和Bar[_]之间的区别是什么?我没有看到任何语义上的差异,因为我不能写任何像new Bar[String]("asdf")。 然而,scalac的确区分它们。它看起来像忘记了界限,并认为Bar[_]是Bar[_ <: Any]而不是Bar[_ <: Foo]。 请注意,这与Java中的预期工作方式不同,不像Scala:h

    4热度

    1回答

    Scala中的界限允许更精确地控制Scala中的类型,例如参数类型。 例如 def foo[ S <: String ](arg: S): S = ... 上述允许一个函数来接受参数是子类型的字符串的,也 def bar[ S >: A <: B ](arg: S): S = ... 上述允许上的设置和下限,使得S是一个子B类型和A超类型。 我的问题是(我认为边界是包含的)是否可以设置参数

    8热度

    1回答

    假设我有: class Bounded[A] { type apply[C <: A] = C } 这编译: implicitly[Bounded[Any]#apply[String] =:= String] 这种失败: type Str = Bounded[Any]#apply[String] ...有: [error] /home/grant/Workspace/scu

    5热度

    1回答

    我想更好地了解以下行为: scala> class C[-A, +B <: A] <console>:7: error: contravariant type A occurs in covariant position in type >: Nothing <: A of type B class C[-A, +B <: A] ^ 不过了以下工

    4热度

    3回答

    问题可能有点混乱,但其意图是这样的: 我想限制的值是在另一值的类型参数的层次结构。鉴于它们都是类型的,如果执行类似的代码,这将是非常好的。 sealed trait Direction case object Buy extends Direction case object Sell extends Direction case class Trade[D <: Direction](

    1热度

    1回答

    我有一些简单的特征(在下面的例子中的实体),由我的应用程序中的大小写类扩展。我想创建一个EntityMapper特征,它提供了一个接口来处理扩展实体特征的案例类(下面的例子中的Foo)。我认为我应该能够使用泛型和边界相当容易地做到这一点,但我已经花了几个小时,并且我没有得到它的正确工作。下面的代码是我认为我应该能够做到的,但是由于编译器错误而失败。该错误是 Test.scala:15:错误:值id