我在Elixir中实现了一棵平衡搜索树,它可以作为键值存储。我有一个名为from_list
的方法,它接受一个键值元组列表,并返回一个包含这些键值对的树。是否有一种方法可以使用泛型来对其进行类型规范,就像在强类型语言中所做的那样?
@spec from_list([{key_type, value_type}]) :: tree(key_type, value_type)
def from_list(list), do:
当我尝试这样做时,出现了错误。Elixir中是否有泛型?还是我只需要将其作为类型为{any, any}的列表?
MapSet
模块定义了一些类似于泛型的类型(请参见difference
和union
的类型):https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/map_set.ex,但 Dialyzer 在类型检查时似乎并没有实际使用这些额外信息。 - Dogbert