elixir typespecs中参数化的可枚举类型

时间:2015-03-04 07:20:50

标签: types elixir

是否可以参数化elixir中的Enumerable.t类型?

所以目前我有一个带有foo s列表的函数:

@spec the_awesome([foo]) :: any
def the awesome(foos) do
  Enum.reduce(foos, &(bar(&2, &1)))
end

实际上它不一定是一个清单!由于唯一的函数调用来自Enum模块,我想更改typespec以获取任何Enumerable,但保持Enumerable必须完全由foo s

组成的要求

这样的东西
@spec the_awesome(Enumerable.t(foo)) :: any

这可能吗?

1 个答案:

答案 0 :(得分:4)

不幸的是现在不行。如果我们真的希望它们具有表现力并且没有计划这样做,我们需要教透析器如何处理协议。