type-erasure

    1熱度

    1回答

    我正在使用樹和表達式列表(Exp,爲簡潔起見刪除了成員)。 sealed abstract class Exp abstract class BinaryExp extends Exp case class Add extends BinaryExp 大多數時候我使用模式匹配來處理樹或表達式列表。 但有時這是一個有點乏味,我想能寫: if (exp.isBinary) ... //or

    1熱度

    1回答

    List<? extends Number> list1 = new ArrayList<Number>(){ {addAll(Arrays.asList(1,2,3,4,5));} }; ListIterator listIterator = list1.listIterator(); listIterator.next(); listIter

    2熱度

    1回答

    這怎麼可能: import scala.util.{Try, Success} import reflect._ case class Foo[A](x: A) extends Dynamic { def get[T: ClassTag]: Option[T] = Try(x.asInstanceOf[T]) match { case Success(r) => Som

    2熱度

    1回答

    斯卡拉案例類的內存開銷是多少? 我已經實現了一些代碼來保存具有多種類型的實詞標記用於NLP處理的詞典。每個令牌類型都有一個case類。 例如,規範引理/閥杆令牌如下: sealed trait InternedLexAtom extends LexAtom{ def id : Int } case class Lemma(id: Int) extends InternedLexAt

    3熱度

    2回答

    我遇到了仿製藥的問題,並且我想要的是在嘗試反映某些通用信息時進行類型擦除。 我正在使用基於http://www.artima.com/weblogs/viewpost.jsp?thread=208860的類來做反射,但這不是問題。 下面的代碼演示了這個問題: private <U extends MyClass1> U doSomething(MyClass2<U> p) { Class

    2熱度

    1回答

    我使用的結構類型這樣定義的接口: trait Foo { def collection: { def apply(a: Int) : String def values() : collection.Iterable[String] } } } 我想有這個接口的實現者的一個可能會使用一個標準可變HashMap中: class Bar {

    12熱度

    1回答

    我正在編寫可以捕獲特定類型的異常的函數。 def myFunc[A <: Exception]() { try { println("Hello world") // or something else } catch { case a: A => // warning: abstract type pattern A is unchecked sinc

    5熱度

    2回答

    我有一個Scala集合,其中包含不同子類型的對象。 abstract class Base class A extends Base class B extends Base val a1 = new A() val a2 = new A() val b = new B() val s = List(a1, a2, b) 我想過濾掉所有A對象或B對象。如果我知道我想在編譯時過

    9熱度

    1回答

    這行之有效 class MyClass[T<: Actor: ClassTag] extends Actor { //.... } 但這並不適當做以下No ClassTag available for MyClass.this.T class MyClass extends Actor { type T<: Actor //... } 即使錯誤: clas

    2熱度

    1回答

    我使用類型擦除設計模式爲我的模板類之一公開模板無關的接口。然而,我遇到了這樣一個問題,即我希望公開的方法之一,它將兩個模板化實例融合到具有不同模板常量參數參數的第三個實例中,似乎需要模板虛擬方法,這是非法的。 這是我的代碼: #include <stdlib.h> template<size_t N> class bar { template<size_t M> bar