如何在 Nim 中使用默认泛型类型?
How to use default generic types in Nim?
更新:Nim 没有泛型类型的默认值(参见答案)。
为什么 Nim 不使用泛型类型的默认值?
我希望能够拥有不同的 Company
版本,但我不想在不需要时指定泛型类型参数 Company[void]()
而只是使用 Company()
.
但这样不行,下面的代码无法编译,为什么?那么泛型类型的默认值有什么意义呢?
type Company*[T = void] = object
name*: string
data*: T
echo Company()
Nim 是一种静态类型语言,这意味着在某些时候它需要弄清楚您的参数类型是什么。您可以在编译时执行或在运行时延迟执行,但这不会改变编译器需要知道所有内容的类型才能正常工作的事实,默认参数仅确定其值而不是类型
代码无法编译,因为 Nim 没有泛型类型的默认值 AFAIK,不确定你从哪里得到它的想法(如果你在文档的某个地方找到它,请 link 它,我以前没见过这个)。
您可以像这样为您的默认类型设置别名:
type
Company*[T] = object
name*: string
data*: T
VoidCompany = Company[void]
echo VoidCompany()
更新:Nim 没有泛型类型的默认值(参见答案)。
为什么 Nim 不使用泛型类型的默认值?
我希望能够拥有不同的 Company
版本,但我不想在不需要时指定泛型类型参数 Company[void]()
而只是使用 Company()
.
但这样不行,下面的代码无法编译,为什么?那么泛型类型的默认值有什么意义呢?
type Company*[T = void] = object
name*: string
data*: T
echo Company()
Nim 是一种静态类型语言,这意味着在某些时候它需要弄清楚您的参数类型是什么。您可以在编译时执行或在运行时延迟执行,但这不会改变编译器需要知道所有内容的类型才能正常工作的事实,默认参数仅确定其值而不是类型
代码无法编译,因为 Nim 没有泛型类型的默认值 AFAIK,不确定你从哪里得到它的想法(如果你在文档的某个地方找到它,请 link 它,我以前没见过这个)。
您可以像这样为您的默认类型设置别名:
type
Company*[T] = object
name*: string
data*: T
VoidCompany = Company[void]
echo VoidCompany()