假設我有類型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兩個版本,
我在想是否可以在Scala中定義類型如NegativeNumber。這種類型將是一個負數,它將由編譯器同樣進行檢查,以整型,字符串等 val x: NegativeNumber = -34
val y: NegativeNumber = 34 // should not compile
同樣: val s: ContainsHello = "hello world"
val s: Cont
假設我們的東西的模型,表示爲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