我在想是否可以在Scala中定義類型如NegativeNumber。這種類型將是一個負數,它將由編譯器同樣進行檢查,以整型,字符串等 val x: NegativeNumber = -34
val y: NegativeNumber = 34 // should not compile
同樣: val s: ContainsHello = "hello world"
val s: Cont
我使用宏註釋來檢查類的字段並基於這些字段添加成員。 例如 @AddVal
class A(x: Int)
擴展到 class A(x: Int){
val get: Int = x
}
提取ValDef後,它tpe領域仍然null所以要獲得類型我有兩個選擇: 1)如果我打電話的ToString的類型樹,我可以看到類型,但現在我已經失去了一些類型安全 2)如果我在類型樹上使用c
假設我們的東西的模型,表示爲case class,因爲這樣 case class User(firstName:String,lastName:String,age:Int,planet:Option[Planet])
sealed abstract class Planet
case object Earth extends Planet
case object Mars extends
假設我有類型A,B,和C,和一個重載的方法: def foo(a: A): C
def foo(b: B): C
然後假設我有一個(複雜)的代碼與工作C類型的對象。我想有是採取兩種類型A或B的方法: def bar(x: [A or B]) = {
val c = foo(x)
// Code that works with c
}
當然,我可以寫的bar兩個版本,