标识符相等性

两个标识符被认为是相等的如果下列算法返回真:

  1. proc sameIdentifier(a, b: string): bool =
  2. a[0] == b[0] and
  3. a.replace("_", "").toLowerAscii == b.replace("_", "").toLowerAscii

这意味着只有首字母大小写敏感。 其他字母在ASCII范围内不区分大小写,并且忽略下划线。

这种相当不正统的标识符比较方法称为 部分不区分大小写 并且具有优于传统区分大小写的一些优点:

它允许程序员大多使用他们自己喜欢的拼写样式,无论是humpStyle还是snake_style,不同程序员编写的库不能使用不兼容的约定。 Nim感知编辑器或IDE可以将标识符显示为首选。 另一个优点是它使程序员不必记住标识符的确切拼写。关于第一个字母的例外允许明确地解析像 var foo:Foo 这样的公共代码。

请注意,此规则也适用于关键字,这意味着 notinnotIn 以及 not_in 是相同的, (全小写版本 (notin, isnot) 是写关键字的首选方式)。

从历史上看,Nim是一种完全 风格不敏感 语言。 这意味着它不区分大小写并且忽略了下划线,并且 fooFoo 之间甚至没有区别。