许多示例 Scala 代码包含名为“xs”的字符串和集合。为什么是xs?
例子:
var xs = List(1,2,3)
val xs = "abc"
许多示例 Scala 代码包含名为“xs”的字符串和集合。为什么是xs?
例子:
var xs = List(1,2,3)
val xs = "abc"
基本上它是一种源自 LISP 的命名约定。其背后的基本原理是:
除了@Ken Bloom指出xs
的 x 的复数形式之外,还需要注意 Scala 等语言的结构。被构造为一个链表,其中容器引用了第一项和列表的其余部分。List
List
::
运算符(称为cons )将列表构造为:
42 :: 69 :: 613 :: Nil
当::
出现在模式匹配中时,还会将列表提取到第一项和列表的其余部分,如下所示:
List(42, 69, 613) match {
case x :: xs => x
case Nil => 0
}
由于这种模式无处不在,读者可以推断出这xs
意味着“列表的其余部分”。
我在函数式编程教程中看到这个名称用于列表变量,但不是字符串(除非字符串被视为字符列表)。
它基本上是示例中使用的虚拟名称。你可以命名一个标量变量x
,而一个列表是xs
,因为xs
是 的复数形式x
。在生产代码中,最好有一个更具描述性的名称。
您可能还会在模式与列表匹配的代码中看到这一点。例如(在 OCaml 中):
let rec len l =
match l with
| [] -> 0
| x :: xs -> 1 + len xs
一对更具描述性的名称可能是first :: rest
,但这只是一个示例。