說我們有這些嵌套類和A一個實例: class A {
case object B
case class C(c: Int)
}
val a1 = new A()
現在我可以檢查a1.B是a1.B.type實例,但我怎麼能檢查類型a1.B是的任意一個A#B.type的實例,因爲編譯器不會接受該語法。 a1.B.isInstanceOf[a1.B.type]
res: B
幾次現在我遇到了一個我認爲應該可以通過路徑依賴類型解決的問題,但我不確定我已經能夠執行所以以最完整或正確的方式。在Java世界中有一個枚舉(或者更常見的是一些靜態值形式的僞枚舉)定義了一個映射到本機類型的封閉集合,這並不罕見。 java.sql.Types就是一個很好的例子: public class Types {
/**
* <P>The constant in th
Scala n00b here。很確定我理解PDT,但是確定並且遇到問題;這裏有一個先前的問題Scala types: Class A is not equal to the T where T is: type T = A與示例代碼我將在這裏重現: 1: class Food
2: class Fish extends Food
3: class Grass extends Food
4:
一系列的隨機refactors後對周圍的工作編譯問題的搜索時提出,我發現的東西,看起來像它應該編譯,但沒有一個很簡潔的例子: trait SubtypeOf[+T] {
type Type <: T
}
def SubtypeOf[T] :SubtypeOf[T] = new SubtypeOf[T] { type Type = T }
class InVar[T]
tra
考慮這個簡單的例子: class Outer {
case class Inner()
def test(i: Inner) = {}
}
正如預期的那樣,這並不因爲類型不匹配的編譯: val o1 = new Outer()
val o2 = new Outer()
o1.test(o2.Inner()) // doesn't compile
如果我們想定義一
我想在運行時恢復Scala中的依賴類型。我基本上想要歸檔一個類型保存映射,其中每個鍵都有一個關聯的類型,但所有存儲的鍵值對的類型信息對Map的用戶不可見(與真棒Shapeless Map不同)。 class Key[V] {
type Value = V
def ->(value: V) = Pair(this, value)
}
trait Pair {
val