Col*_*ege 3 generics erlang types elixir
我在elixir中有一个Balanced Search Tree的实现,它用作键值存储。
我有一个方法from_list,它接收键值元组的列表,并与它们一起返回一棵树。有没有办法像我在强类型语言中一样使用泛型来进行类型规范?
@spec from_list([{key_type, value_type}]) :: tree(key_type, value_type)
def from_list(list), do:
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到一个错误。Elixir中有仿制药吗?还是我只需要使其成为{any,any}类型的列表?
@spec from_list([{key_type, value_type}]) :: tree(key_type, value_type) when key_type: var, value_type: var
Run Code Online (Sandbox Code Playgroud)
防护可用于限制作为函数参数提供的类型变量。
Run Code Online (Sandbox Code Playgroud)@spec function(arg) :: [arg] when arg: atom如果要指定多个变量,请用逗号分隔它们。
Run Code Online (Sandbox Code Playgroud)@spec function(arg1, arg2) :: [arg1, arg2] when arg1: atom, arg2: integer没有限制的类型变量也可以使用定义
var。Run Code Online (Sandbox Code Playgroud)@spec function(arg) :: [arg] when arg: var