Elixir Guard特定的协议

时间:2014-03-12 11:08:20

标签: elixir

我想知道Elixir是否有可能保护特定的协议。

def some_fun(f) when implement?(f, Dict.Behaviour), do: ...

或者有什么可以断言f特别是HashDict吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

你可以这样做:

iex> Enumerable.impl_for!([])
Enumerable.List

但它并没有在后卫身上发挥作用。但是,这通常是一种不好的做法,您应该只是调用协议。

如果你特别担心HashDict,你可以这样做:is_record(dict, HashDict)它应该适用于警卫。