我是 Scala 的新手,我对类型系统有疑问。
flatten 方法适用于嵌套集合,因此如果我有一个 List 列表,它将把它展平为一个 List。但是在已经平坦的集合上调用 flatten 是没有意义的。果然,Scala 类型检查器会将其标记为错误。
List(List(1,2,3),List(4,5,6)).flatten // produces List(1,2,3,4,5,6)
List(1,2,3,4).flatten // type error
我知道这在某种程度上依赖于隐式参数来展平。但是我不知道隐式值来自哪里以及它是如何用来断言调用 flatten 的对象的类型的。另外,为什么 List.flatten 的 scaladocs 中没有显示隐式参数?