abstract-type

    0熱度

    1回答

    我一直試圖解決這個問題,但我似乎無法找到解決這個問題的方法。我似乎無法在Scala中正確建模。 可以說我有一個特徵MyTrait與一些不可變的類實現它。 它看起來是這樣的: trait MyTrait { type Repr <: MyTrait def substitute(original: Item, replacement: Item) : Repr de

    1熱度

    1回答

    當我試圖在斯卡拉在馬丁·奧德斯基的編程抽象類型的動物/食品例, class Food abstract class Animal { type SuitableFood <: Food def eat(food:SuitableFood) } class Grass extends Food class Cow extends Animal { type Su

    0熱度

    2回答

    我想訪問「靜態」的成員,以實現以下目標: abstract class Super { def typeSpecific: Int } class SubA extends Super { def typeSpecific = 1 } class SubB extends Super { def typeSpecific = 2 } class Tes

    1熱度

    2回答

    我在Scala編程的第20.7章(Martin Odersky,Lex Spoon和Bill Venners)中有關於抽象類型主題的基本示例。下面的代碼是從清單20.10,除了我添加了似乎表面上通過在前面的例子中隱含的最後兩行: class Food abstract class Animal { type SuitableFood <: Food def eat(food:

    1熱度

    1回答

    考慮下面的代碼: abstract class Foobar { type Parent <: Foobar def parent: Option[Parent] } class Foo extends Foobar { type Parent = Nothing val parent = None // *** //

    2熱度

    2回答

    我的情況是這樣的: trait A { type B def foo(b: B) } trait C[D <: A] { val d: D def createB(): D#B def bar() { d.foo(createB) } } 在REPL,它抱怨 <console>:24: error: type mi

    0熱度

    1回答

    我有這個用例我無法解決。 我想到了消息傳遞編程的環境。 有兩個主要概念,事物和環境: 事情就像現實世界它們可以是被動或主動的,他們可以發送和接收消息。環境可以實現事物之間的溝通。 我想出了這個解決方案: /**** **** Thing.scala/ abstract class Thing(environment : Environment){ val uniqueName : Str

    1熱度

    2回答

    考慮鬥牛犬: trait Animal { type Food def defaultFood(): Food } class Bulldog extends Animal { type Food = Steak ... implementations ... } Bulldog.defaultFood()工作得很好的編譯器(雖然我的語法高亮顯

    1熱度

    2回答

    我們有一個特質Foo和正在考慮的方法cast,需要一個類型參數A <: Foo和參數f: Foo並返回Some(f: A)如果f <: A,否則None類型: trait Foo def cast[A <: Foo](f: Foo): Option[A] = ??? 如果Foo extendings將永遠是通用的,那麼附加ClassTag是結論: def cast[A <: Foo : Cl

    3熱度

    2回答

    可以說我們有一個特徵,它具有一些值和一些操作。 trait Foo { type Self <: Foo val x: Int def withX(x: Int): Self } 這是使用抽象類型實現的。我們有一個綁定在Self上的類型,可以像這樣實現: case class Foo1(x: Int) extends Foo { type Self =