操作符
Nim库重度使用重载,一个原因是每个像 + 的操作符就是一个重载过程。解析器让你在 中缀标记 (a + b)或 前缀标记 (+ a)中使用操作符。 一个中缀操作符总是有两个实参,一个前缀操作符总是一个。(后缀操作符是不可能的,因为这有歧义: a @ @ b 表示 (a) @ (@b) 还是 ([email protected]) @ (b) ?它总是表示 (a) @ (@b) , 因为Nim中没有后缀操作符。
除了几个内置的关键字操作符如 and 、 or 、 not ,操作符总是由以下符号构成: + - * \ / < > = @ $ ~ & % ! ? ^ . |
允许用户定义的操作符。没有什么阻止你定义自己的 @!?+~ 操作符,但这么做降低了可读性。
操作符优先级由第一个字符决定。细节可以在手册中找到。
用反引号"``"括起来定义一个新操作符:
- proc `$` (x: myDataType): string = ...
- # 现在$操作符对myDataType生效,重载解析确保$对内置类型像之前一样工作。
"``"标记也可以来用调用一个像任何其它过程的操作符:
- if `==`( `+`(3, 4), 7): echo "True"