value-class

    1熱度

    2回答

    value classes可用於實現類型安全而不需要拆箱。 我的印象是,在運行時這些類型/類將「不存在」,被視爲簡單類型(例如,在運行時,值類case class X(i: Int) extends AnyVal將是簡單的Int)。 但是,如果你調用一個值類實例的方法.toString它會打印出類似這樣: scala> val myValueClass = X(3) myValueClass:

    1熱度

    1回答

    我試圖實現一個不佔用額外內存的選項。 我創建了一個類。空值表示無,非空值表示某些。 class Maybe[+T](private val nullable: T) extends AnyVal { @inline final def isDefined: Boolean = { println("isDefined called") val res = nullab

    1熱度

    1回答

    我已經定義了下面的類層次結構,我要限制的類型參數是舒適與Double ... sealed abstract class Quantity[-T](value: T)(implicit ev: T <:< Double) case class DiscreteQuantity(value: Long) extends Quantity[Long](value) case class Con

    5熱度

    1回答

    我正在反思地調用一個方法,它的參數可能是也可能不是value class的一個實例。由於值類的目的是爲了避免對基礎值進行裝箱,如果參數類型是值類,那麼所討論的方法實際上會期望取消裝箱值。爲了處理這種情況,我試圖從值類中展開底層的值。我首先需要確定參數是一個值類的,在這裏我碰到的第一個攔路虎: def isObjectOfValueClass(arg: Any) = classOf[Any

    2熱度

    1回答

    我試圖嘲笑一種方法,返回一個值類的實例(extends AnyVal) 我收到了一些奇怪的錯誤消息,我明白(因爲值類刪除),但我很驚訝Mockito沒有應付那個。 我的類: case class MyValueClass(value: String) extends AnyVal 我想嘲笑功能: trait ToMock { def something(someParams: Str

    1熱度

    2回答

    我在我的項目中有代表ID的對象。 假設它是ChairId,TableId,LampId。我希望他們都從GenericId繼承。我希望能夠致電def f(x: GenericId) = x.id 我希望他們只持有單一的id: String,所以我想讓他們擴展AnyVal。 此外,我想爲每種類型提供功能generate這將產生我具體的ID即我想喜歡的類型的東西ChairId.generate() 我鍵

    1熱度

    1回答

    我有一個值類(位置),其中有兩個雙打(x和y)。 我也有一艘班級船隻,它有一個帶有位置物體的屬性。 我需要能夠做一個查找,如:在(5,7)與船持續時間。 我也希望能夠更改位置對象的值,因爲多個船舶可以引用相同的位置對象,並且當位置對象更改時它們都必須一起移動。我已經看過hashmap,但能夠在新的位置獲取船舶(5,7)我需要重寫位置對象的哈希碼(以便具有相同值的位置具有相同的哈希),我聽說你不應該

    1熱度

    1回答

    我無法看到值類和枚舉之間的區別。如果有人能告訴我他們之間的區別以及他們使用的區別是什麼,那將是非常棒的。

    2熱度

    1回答

    我在Scala 2.10.3中使用值類(擴展AnyVal的類),但在將它們用作抽象方法的參數時遇到了一個奇怪的編譯器錯誤。 如下面的例子演示了: class ValueClass(val x: Int) extends AnyVal trait Test { def foo(v: ValueClass): Int } new Test { override def f

    2熱度

    3回答

    我知道在編譯時內嵌在scala中的value class。 也許這樣 case class A(i: Int) extends AnyVal { def +(that: A) = A(this.i + that.i) } A(1) + A(2) // After compile it equals to 1 + 2 ,但它似乎不是什麼大不了的事給我。 它可能提高性能,但是, 調用