Elixir 长生不老药是一种特殊的协议

Elixir 长生不老药是一种特殊的协议,elixir,Elixir,我想知道,在长生不老药中,是否有可能为一个特定的协议辩护 def some_fun(f) when implement?(f, Dict.Behaviour), do: ... 或者有什么东西可以断言f是一个HashDict吗 谢谢 您可以执行以下操作: iex> Enumerable.impl_for!([]) Enumerable.List 但这在守卫中不起作用。但是,这通常是一种不好的做法,您应该只调用协议 如果您特别担心HashDict,您可以这样做:is_recorddict

我想知道,在长生不老药中,是否有可能为一个特定的协议辩护

def some_fun(f) when implement?(f, Dict.Behaviour), do: ...
或者有什么东西可以断言f是一个HashDict吗

谢谢

您可以执行以下操作:

iex> Enumerable.impl_for!([])
Enumerable.List
但这在守卫中不起作用。但是,这通常是一种不好的做法,您应该只调用协议

如果您特别担心HashDict,您可以这样做:is_recorddict,HashDict,它应该可以在警卫上工作。

您可以这样做:

iex> Enumerable.impl_for!([])
Enumerable.List
但这在守卫中不起作用。但是,这通常是一种不好的做法,您应该只调用协议

如果你特别担心HashDict,你可以这样做:is_recorddict,HashDict,它应该在警卫上工作