【发布时间】:2020-12-17 16:48:10
【问题描述】:
我正在尝试创建一个 proc,它返回一个自定义元组,其中包含一个 proc 类型的单个元素,即
type
CustomTuple = tuple
foo: proc(input: int): int
proc createCustomTuple(): CustomTuple =
(foo: proc(input: int): int = 10)
但是,当我编译它时,我收到以下错误(我在 Windows 上使用 Nim 版本 1.2.6 进行编译)。
错误:类型不匹配:得到
但预期 'CustomTuple = tuple[foo: proc (input: int): int{.closure.}]'
所以编译器认为我正在返回一个常规元组而不是 CustomTuple 但我不知道如何更改它以使其工作。 Nim manual 中的元组文档显示了以我正在执行的方式构建的自定义元组,但我找不到任何从 proc 返回自定义元组的示例。
如果我将 CustomTuple 定义更改为包含非 procs 的类型,那么它会成功编译,因此它似乎需要对包含导致无法编译的 proc 的自定义元组进行处理。
谁能解释一下为什么上面的代码不能编译?
【问题讨论】: