尼姆。如何继承不同类型的所有操作?

Nim. How to inherit all operations on distinct type?

假设,我有 type Radians = distinct floattype Degrees = distinct float
这不允许我使用浮点数可用的所有操作,甚至是最基本的算术 +-*
有什么方法可以对它们全部进行排序 'inherit' 并仅将 distinct 用于编译时检查?

查看 nim 手册中 Distinct 类型的 Modeling Currencies 部分以获取完整示例。

总结:

使用借用编译指示

proc `*` (x: int, y: Dollar): Dollar {.borrow.}
proc `div` (x: Dollar, y: int): Dollar {.borrow.}

使用模板减少样板文件

template multiplicative(typ, base: typedesc) =
  proc `*` *(x: typ, y: base): typ {.borrow.}
  proc `*` *(x: base, y: typ): typ {.borrow.}
  proc `div` *(x: typ, y: base): typ {.borrow.}
  proc `mod` *(x: typ, y: base): typ {.borrow.}