为什么List和String标识符名为“xs”(在Scala和其他语言中)?

时间:2010-10-14 22:14:26

标签: scala naming-conventions identifier

许多示例Scala代码包含名为“xs”的字符串和集合。 为什么选择xs?

示例:

var xs = List(1,2,3)
val xs = "abc"

4 个答案:

答案 0 :(得分:43)

基本上它是源于LISP的命名约定。其背后的理由是:

  1. X是常见的占位符名称。
  2. XS发音为X'es,即“很多X”。

答案 1 :(得分:29)

答案 2 :(得分:15)

除了xs意图是x @Ken Bloom指出的复数之外,还要注意像Scala结构List这样的语言。 List被构造为链接列表,其中容器具有对第一个项目和列表其余部分的引用。

alt text

::运算符(称为cons)将列表构造为:

42 :: 69 :: 613 :: Nil

::出现在模式匹配中时,还会将列表提取到第一项和列表的其余部分,如下所示:

List(42, 69, 613) match {
  case x :: xs => x
  case Nil => 0
}

由于此模式随处可见,读者可以推断xs暗示“列表的其余部分。”

答案 3 :(得分:8)

我在函数式编程教程中看到过这个名字用于列表变量,但不是字符串(除非字符串被认为是字符列表)。

它基本上是示例中使用的虚拟名称。您可以命名标量变量x,而列表为xs,因为xsx的复数形式。在生产代码中,最好有一个更具描述性的名称。

您可能还会在代码中看到与模式匹配的模式。例如(在OCaml中):

let rec len l =
  match l with
  | [] -> 0
  | x :: xs -> 1 + len xs

更具描述性的名称对可能是first :: rest,但这只是一个示例。