我想知道Elixir是否有可能保护特定的协议。
def some_fun(f) when implement?(f, Dict.Behaviour), do: ...
或者有什么可以断言f特别是HashDict吗?
谢谢!
答案 0 :(得分:5)
你可以这样做:
iex> Enumerable.impl_for!([])
Enumerable.List
但它并没有在后卫身上发挥作用。但是,这通常是一种不好的做法,您应该只是调用协议。
如果你特别担心HashDict,你可以这样做:is_record(dict, HashDict)
它应该适用于警卫。