Scala中的类型引用机制
Scala中的类型通过两种机制引用: 一种称为“路径依赖类型”(),另一种称为“类型投影”(#)Scala中的类型引用机制,scala,types,Scala,Types,Scala中的类型通过两种机制引用: 一种称为“路径依赖类型”(),另一种称为“类型投影”(#) 两者的区别是什么?让我试着用例子来说明 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@20864cd
两者的区别是什么?让我试着用例子来说明
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]
^
scala>A类{
|类型B=Int
| }
定义的A类
scala>隐式[Int=:=A#B]
res1:Int=:=Int=
scala>val a=新a
a:a=A@20864cd1
scala>隐式[Int=:=a.B]
res2:Int=:=a.B=
scala>隐式[Int=:=a#B]
:12:错误:未找到:类型a
隐式[Int=:=a#B]
^
scala>隐式[Int=:=A.B]
:12:错误:未找到:值A
隐式[Int=:=A.B]
^
这个答案很好地解释了这一点: