gpt4 book ai didi

erlang - Erlang 中可以实现多态记录吗?

转载 作者:行者123 更新时间:2023-12-02 02:40:56 24 4
gpt4 key购买 nike

我正在阅读有关 polymorphic types 的内容唯一的例子是元组:

type queue(Type) :: {fifo, list(Type), list(Type)}.

我有这样的记录:

-record(heap_node, { item :: any(), children :: [#heap_node{}] }).
-type heap_node() :: #heap_node{}.

现在我无法将类型参数传递给记录。在 Erlang 中可能吗?

最佳答案

您可以在 item 中创建多态类型:

-type heap_node(A) :: #heap_node{item :: A}.

但是 A 不会转移到 children 字段 - 这些 heap_node 记录仍将具有不受限制的item字段。

我尝试递归地使用该类型:

-type heap_node(A) :: #heap_node{item :: A, children :: [heap_node(A)]}.

但是 Dialyzer 不喜欢这样:

dialyzer: Analysis failed with error:
foo.erl:9: Illegal declaration of #heap_node{children}

关于erlang - Erlang 中可以实现多态记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com