在Scala中键入引用机制

时间:2018-03-29 12:31:18

标签: scala types

Scala中的类型通过两种机制引用: 一种称为“路径依赖型”(。),另一种称为“类型投影”(#)。

两者之间有什么区别?

1 个答案:

答案 0 :(得分:0)

让我试着用例子来证明它。

scala> class A {
     |   type B = Int
     | }
defined class A

scala> implicitly[Int =:= A#B]
res1: Int =:= Int = <function1>

scala> val a = new A
a: A = A@20864cd1

scala> implicitly[Int =:= a.B]
res2: Int =:= a.B = <function1>


scala> implicitly[Int =:= a#B]
<console>:12: error: not found: type a
       implicitly[Int =:= a#B]
                          ^

scala> implicitly[Int =:= A.B]
<console>:12: error: not found: value A
       implicitly[Int =:= A.B]
                          ^