मुझे आश्चर्य है कि क्या Elixir से पूछने का कोई तरीका है कि यह ऑब्जेक्ट उस प्रोटोकॉल को लागू करता है, obj |> implements(Enumerable)
जैसे कुछ?मैं कैसे जांच सकता हूं कि प्रोटोकॉल लागू किया गया है या नहीं?
असल में, मुझे structs और नक्शे को अलग करना होगा। समाधान मैं वर्तमान में है थोड़े बदसूरत है:
try
obj |> Enum.each ...
rescue
e in Protocol.UndefinedError -> obj |> Maps.keys ...
end
ऊपर काम करता है, लेकिन मैं पैटर्न की तरह मिलान का उपयोग करना पसंद करेंगे:
cond do
obj |> is_implemented(Enumerable) -> ...
_ -> ...
end
मैं कुछ याद आ रही है? क्या कोई स्पष्ट रूप से जांच सकता है कि वांछित प्रोटोकॉल ऑब्जेक्ट द्वारा कार्यान्वित किया गया है या नहीं?
बिल्कुल सही है, धन्यवाद। मुझे आश्चर्य है कि यह क्यों गायब है http://elixir-lang.org/docs/stable/elixir/Enumerable.html – mudasobwa
शायद https://github.com/elixir-lang/elixir/blob/d02be44dd5deb763e5a0eb03f3c716506d781d08/lib/elixir की वजह से /lib/protocol.ex#L430। – Dogbert