操作符

Nim库重度使用重载,一个原因是每个像 + 的操作符就是一个重载过程。解析器让你在 中缀标记 (a + b)或 前缀标记 (+ a)中使用操作符。 一个中缀操作符总是有两个实参,一个前缀操作符总是一个。(后缀操作符是不可能的,因为这有歧义: a @ @ b 表示 (a) @ (@b) 还是 ([email protected]) @ (b) ?它总是表示 (a) @ (@b) , 因为Nim中没有后缀操作符。

除了几个内置的关键字操作符如 andornot ,操作符总是由以下符号构成: + - * \ / < > = @ $ ~ & % ! ? ^ . |

允许用户定义的操作符。没有什么阻止你定义自己的 @!?+~ 操作符,但这么做降低了可读性。

操作符优先级由第一个字符决定。细节可以在手册中找到。

用反引号"``"括起来定义一个新操作符:

  1. proc `$` (x: myDataType): string = ...
  2. # 现在$操作符对myDataType生效,重载解析确保$对内置类型像之前一样工作。

"``"标记也可以来用调用一个像任何其它过程的操作符:

  1. if `==`( `+`(3, 4), 7): echo "True"