2
我有,這是一個愚蠢的問題的感覺,但這裏去...我可以定義一個類型是另一種類型的元素的子集?這是一個簡單的例子。如何將一個類型約束爲另一個類型的子集?
scala> class Even(i: Int) {
| assert(i % 2 == 0)
| }
defined class Even
scala> new Even(3)
java.lang.AssertionError: assertion failed
這是一個運行時檢查。我可以定義一個在編譯時檢查過的類型嗎? IE,那輸入參數i
可以證明總是偶數?
C#可以在編譯時做一個有限的版本。 –
您可以定義'Even.apply',以便在approprite時產生一個「Odd」。開玩笑... – Raphael