在scala REPL中获取变量的完全限定类型

时间:2014-04-09 15:57:22

标签: scala collections types read-eval-print-loop

我使用Set函数运行scala repl创建简单值,并尝试找出创建Set的风格。

$ scala
Welcome to Scala version 2.10.3-20130923-000000-e2fec6b28d (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val s = Set(0,3,1)
s: scala.collection.immutable.Set[Int] = Set(0, 3, 1)

scala> :type s
scala.collection.immutable.Set[Int]

scala> s.getClass
res0: Class[_ <: scala.collection.immutable.Set[Int]] = class scala.collection.immutable.Set$Set3

这确实让我清楚。我为Set读了scaladoc,发现Set是一个通用特征,可能有不同的具体实现。

那么这次在REPL中使用了set trait的实现是什么?如何在不深入scala源代码和执行其他复杂任务的情况下解决这个问题?如果搜索类型只需要REPL本身,那将是完美的。

我从无到有地感到困惑。 Set3是一个有效的类名,而不是一种垃圾。所以,确定类的正确方法:

scala> val s = Range(0,1000).toSet
scala> s.getClass
res0: Class[_ <: scala.collection.immutable.Set[Int]] = class scala.collection.immutable.HashSet$HashTrieSet

应该关闭答案

0 个答案:

没有答案