list - 为什么这个列表意味着它在 scala 中还有 3 或 3 个以上的元素

标签 list scala

为什么这个列表意味着它在 scala 中还有 3 或 3 个元素

x::y::List(xs::ys)::zs

x、y 或 ys、zs 可以为空吗? 根据老师的说法,为什么它必须是一个至少 3 个元素的列表

谢谢!

最佳答案

让我们为这个表达式提供一些上下文,使类型变得明确。

def foo[A](
  x: List[List[A]],
  y: List[List[A]],
  xs: A,
  ys: List[A],
  zs: List[List[List[A]]]
): List[List[List[A]]] =
  x::y::List(xs::ys)::zs

按照惯例,如果您有标识符 xxs,那么 xs 将具有集合类型(例如 List[A] )和 x 将是集合的元素类型(例如 A)。这里的情况并非如此,所以我认为你的老师通过错误地命名变量使这变得不必要的困难。

现在,例如,让我们使用尽可能少的值来调用 foo:

> foo(Nil, Nil, 1, Nil, Nil)
res: List[List[List[Int]]] = List(List(), List(), List(List(1)))

关于list - 为什么这个列表意味着它在 scala 中还有 3 或 3 个以上的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26249900/

相关文章:

python - 如何将类对象 append 到列表

list - 将列表添加到列表 lisp

Scala:如何对泛型类的类型参数提出要求?

scala - 由于扩展递归类型参数,关于类图不是有限的编译器错误

python - 列出扩展的奇怪行为

python - Pandas - 迭代时重复行

python - 使用理解反向采样嵌套列表

eclipse - 为什么当 Maven 构建工作良好但将 Spark Jar 添加为外部 Jar 时会出现编译错误 “object Apache is not a member of package org”

scala - 在 Spark SQL 中将多个小表与一个大表连接起来的最佳方法

generics - 以通用方式操作 Scala 集合