type-bounds

    2热度

    1回答

    我如何可以指定一个未应用的高阶类型参数的边界,使得下列编译: trait Declr[Impl[_]] // need to specify constraints for Impl's type parameter trait Sys[S <: Sys[S]] object X extends Declr[X] // doesn't compile, because S is more

    4热度

    2回答

    我有一个Scala特性,定义如下: trait AdvertisementDAO[A <: Advertisement] extends CrudRepository[A, Integer] { ... 我希望能够得到这个DAO的实例,将用于广告或两个子类工作基地广告类本身。我不知道如何达到预期的效果。 这里是我的尝试: @Inject var advertisementDAO: Adve

    3热度

    1回答

    我在使用Mockito和Specs2模拟具有参数类型视图边界的方法时遇到了一个问题。简单地说,由于结合的视图转换为一个额外的隐含参数的方法,的Mockito无法调和通过期望值来描述实际的参数的模拟临危呼叫: 例如: //Receiver.scala class Receiver { def methodWithViewBound[T <% WrappedString](w : T) :

    6热度

    2回答

    这个问题出现在我正在编写的模块中,但我做了一个展示相同行为的最小案例。 class Minimal[T](x : T) { def doSomething = x } object Sugar { type S[T] = { def doSomething : T } def apply[T, X <: S[T]] (x: X) = x.doSomething

    3热度

    2回答

    继my other question约reduceLeft,的reduceLeft上Seq签名是 def reduceLeft [B >: A] (f: (B, A) ⇒ B): B ,我们可以使用表达式诸如 List(1,2,3,4) reduceLeft (_ + _) 在这个例子中A是Int调用它,所以reduceLeft期望一个Function2[B >: Int, Int, B]

    4热度

    3回答

    以下两个代码示例表示相同的逻辑。检查字符串是否为空并根据该检查进行分支。第一个样本安全编译。第二个产生与Java泛型相关的类型不匹配错误。我的问题看起来很简单,但它避开了我。为什么编译器以不同的方式处理这两个语句?我怎样才能更好地理解这里发生了什么? /* compiles cleanly */ protected Collection<String> getUserRoles(Object c

    8热度

    5回答

    我设置多个或运算类型界限是否有可能做这样的事情在Scala: class MyTest { def foo[A <: String _or_ A <: Int](p:List[A]) = {} } 也就是说,类型A可能是String或Int。这可能吗? (类似问题here)

    2热度

    2回答

    我真的很喜欢使用上限类型边界来给我的结构可以采取一些灵活性。不过,我真的不知道它的任何背后的原理,因为我用下面的代码中找到: object BoundsTest { abstract trait Service class Collection[T <: Service] extends collection.mutable.HashMap[Symbol, collection

    1热度

    1回答

    我想执行一个类型参数化函数按照练习吧书的第72页(实施forall的使用过滤器): def forallA[B <: A](xs:List[A])(f:A => B) : List[B] = { xs.filter(x => true) match { case Nil => Nil case y :: ys => f(y) :: forallA(ys)(f)

    2热度

    1回答

    我有两个抽象类,它们将保存对彼此的引用。如何/我可以键入绑定类型成员,以便派生的十六进制类的SideT成员中的HexT类型将始终是派生的Hex类?因此对于派生类HexA,保证:HexA#SideT#HexT = HexA 类似地,所有派生的Side类的HexT成员中的SideT类型都将是派生的Side类:SideB#HexT# SideT = SideB 我使用Scala for Eclipse