खोज…


टिप्पणियों

स्ट्रक्चर्स पर एक नोट

नक्शे के साथ प्रोटोकॉल कार्यान्वयन को साझा करने के बजाय, संरचनाओं को अपने प्रोटोकॉल कार्यान्वयन की आवश्यकता होती है।

परिचय

प्रोटोकॉल एलिक्सिर में बहुरूपता को सक्षम करते हैं। defprotocol साथ प्रोटोकॉल को परिभाषित करें:

defprotocol Log do
  def log(value, opts)
end

एक प्रोटोकॉल को defimpl लागू करें:

require Logger
# User and Post are custom structs

defimpl Log, for: User do
  def log(user, _opts) do
    Logger.info "User: #{user.name}, #{user.age}"
  end
end

defimpl Log, for: Post do
  def log(user, _opts) do
    Logger.info "Post: #{post.title}, #{post.category}"
  end
end

उपरोक्त कार्यान्वयन के साथ, हम कर सकते हैं:

iex> Log.log(%User{name: "Yos", age: 23})
22:53:11.604 [info]  User: Yos, 23
iex> Log.log(%Post{title: "Protocols", category: "Protocols"})
22:53:43.604 [info]  Post: Protocols, Protocols

प्रोटोकॉल आपको किसी भी डेटा प्रकार को भेजने की अनुमति देते हैं, इसलिए जब तक यह प्रोटोकॉल को लागू करता है। इसमें कुछ अंतर्निहित प्रकार जैसे कि Atom , BitString , Tuples और अन्य शामिल हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow