Nim 0.20 版本可以被视为第一个稳定 1.0 版本的候选版本,它包含了形成第一个提交语言状态的第一个稳定分支所需的几个破坏互操作性的更改。 1.0 版被认为是一个稳定的、长期支持的版本,将保证在该语言的稳定部分保持向后兼容性。 另外,编译器还将提供实验模式,其中将开发可能违反向后兼容性的新功能。
Nim 0.20 中提出的更改包括:
- “Not”现在始终是一元运算符,即现在不允许使用“assert(not a)”这样的表达式,只允许“assert not a”;
- 在编译阶段启用对整数和实数转换的严格检查,即表达式“const b = uint16(-1)”现在将导致错误,因为 -1 无法转换为无符号整数类型;
- 提供了常量和循环变量的元组解包。
例如,现在您可以使用“const (d, e) = (7, "eight")”和“for (x, y) in f”等赋值; - 提供哈希和表的默认初始化。 例如,声明“var s: HashSet[int]”后,您可以立即执行“s.incl(5)”,这之前会导致错误;
- 改进了与“case”运算符和数组索引越界相关问题的错误信息;
- 禁止在迭代期间更改表长度。
来源: opennet.ru