object Initialization {
def main(args: Array[String]): Unit = {
val list = Traversable(1,2,4,5)
//list.foreach(println)
println( list.getClass.getSimpleName )
}
}
它可以打印$colon$colon
,但我预计会出现类似List
. 这个不起眼的名字是什么意思?
object Initialization {
def main(args: Array[String]): Unit = {
val list = Traversable(1,2,4,5)
//list.foreach(println)
println( list.getClass.getSimpleName )
}
}
它可以打印$colon$colon
,但我预计会出现类似List
. 这个不起眼的名字是什么意思?
这是因为List
它是一个密封的超类,它位于案例类::
和对象之上Nil
(请参阅List 文档下的已知子类部分)。::
发音为cons,以大多数传统函数式编程语言中的列表 cons 运算符命名。
由于您的列表头实际上是案例类的一个实例::
,并且 Scala 使用名称修饰来表示 JVM 上的非单词类名称,因此您最终$colon$colon
会使用反射来获取名称。
更新:我不确定您要使用类名做什么,但您可能可以使用它stringPrefix
。它是为任何扩展定义的GenTraversableLike
,这几乎是每个 Scala 集合类型。
如果您尝试使用类名进行控制流,您可能应该尝试其他方法。模式匹配会很好地工作,例如:
xs match {
list: List[_] => // do list stuff
set: Set[_] => // do set stuff
}