标识符相等

如果以下算法返回真,则认为两个标识符相等:

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

这意味着,在进行比较时,只有第一个字母是区分大小写的,其他字母在 ASCII 范围内不区分大小,并忽略下划线。

这种相当非正统的标识符比较方式被称为 partial case-insensitivity “部分大小写不敏感”,比传统的大小写敏感有一些优势。

它允许程序员使用自己喜欢的拼写风格。 humpStyle “驼峰风格”还是 snake_style “蛇形风格”,但应要求不同程序员编写的库不能使用不兼容的约定。 另一个好处是,按 Nim 思考的编辑器或 IDE 可以显示首选的标识符,使程序员不必记住标识符的准确拼写。 而第一个字母例外的原因是,允许明确解析如 var foo: Foo 这种常见代码。

需注意,这个规则也适用于关键字,即 notin 、 notIn 、 not_in 相同,建议关键字的书写方式首选全小写方式,如 notin, isnot 。

Nim 曾经是一种 style-insensitive 完全”大小写不敏感”的语言,意味着不区分大小写,忽略下划线,甚至 foo 和 Foo 之间没有区别。