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