2015-09-04 88 views
1

的LUB我拿了最小上限一SeqSet的:序列和集合

scala> import scala.reflect.runtime.universe._ 
import scala.reflect.runtime.universe._ 

scala> lub(List (typeOf[Seq[_]], typeOf[Set[_]])) 
res12: reflect.runtime.universe.Type = 
      Iterable[Any] with Int with _$2 => Any forSome { type _$2 } 

請幫助我瞭解輸出。我猜IterableSetSeq的最小父項。

但其餘的呢?

回答

1

(Int with _$2) => Any forSome { type _$2 }的部分來自這一事實,即(通過延伸PartialFunctionSet直接,Seq)延伸Function1

具體地說它是(A) => Boolean(由Set[A]延長)和PartialFunction[Int, A](由Seq[A]延長)的LUB。

@ import scala.reflect.runtime.universe._ 
import scala.reflect.runtime.universe._ 

@ lub(List(typeOf[Function1[_, Boolean]], typeOf[PartialFunction[Int, _]])) 
res1: Type = _$1 with Int => Any forSome { type _$1 } 

其中

Int with _Int_的GLB(因爲Function1第一類型參數是逆變)

Any_Boolean的LUB。