标识符相等性
两个标识符被认为是相等的如果下列算法返回真:
- proc sameIdentifier(a, b: string): bool =
- a[0] == b[0] and
- a.replace("_", "").toLowerAscii == b.replace("_", "").toLowerAscii
这意味着只有首字母大小写敏感。 其他字母在ASCII范围内不区分大小写,并且忽略下划线。
这种相当不正统的标识符比较方法称为 部分不区分大小写 并且具有优于传统区分大小写的一些优点:
它允许程序员大多使用他们自己喜欢的拼写样式,无论是humpStyle还是snake_style,不同程序员编写的库不能使用不兼容的约定。 Nim感知编辑器或IDE可以将标识符显示为首选。 另一个优点是它使程序员不必记住标识符的确切拼写。关于第一个字母的例外允许明确地解析像 var foo:Foo 这样的公共代码。
请注意,此规则也适用于关键字,这意味着 notin 和 notIn 以及 not_in 是相同的, (全小写版本 (notin, isnot) 是写关键字的首选方式)。
从历史上看,Nim是一种完全 风格不敏感 语言。 这意味着它不区分大小写并且忽略了下划线,并且 foo 和 Foo 之间甚至没有区别。