我目前正在学习Scala并解决99个问题 (http://aperiodic.net/phil/scala/s-99/)赋予P07(http://aperiodic.net/phil/scala/s-99/p07.scala)的解决方案,如下所示:
def flatten(list: List[Any]): List[Any] = list.flatMap {
case ms: List[_] => flatten(ms)
case e => List(e)
}
但是,当我将_
更改为Any
或以其他方式更改时,结果似乎没有什么不同。因此,我质疑区别是什么,为什么他们要这样做呢?
答案 0 :(得分:1)
简而言之,Any
是一个类,就像Java中的对象一样。 _
就像一个通配符,用于缩写。在大多数情况下,它的工作原理非常相似,但是例如,当您考虑List[Any]
时,会得到任何内容的列表,但是如果您有{{1 }},您会得到一个清单,其中不知道是什么,一无所获。