如何在Nim中使用默认泛型类型



UPDATE:Nim没有泛型类型的默认值(请参阅答案(。


为什么Nim不使用泛型类型的默认值?

我希望能够有不同的Company版本,但我不想在不需要的时候指定泛型类型参数Company[void](),只使用Company()

但它不是这样工作的,下面的代码不会编译,为什么?那么,泛型类型的默认值有什么意义呢?

type Company*[T = void] = object
name*: string
data*: T
echo Company()

代码没有编译,因为Nim没有通用类型AFAIK的默认值,不确定它是从哪里得到的(如果你在文档中找到它,请链接它,我以前从未见过(。

你可以做的是像这样别名你的默认类型:

type
Company*[T] = object
name*: string
data*: T
VoidCompany = Company[void]
echo VoidCompany()

Nim是一种静态类型的语言,这意味着在某个时候它需要弄清楚参数的类型。你可以在编译时这样做,也可以在运行时延迟它,但这不会改变编译器需要知道所有东西的类型才能正常工作的事实,默认参数只决定它的值,而不是类型

最新更新