Elixir Language
Protokolle
Suche…
Bemerkungen
Ein Hinweis zu structs
Anstatt die Protokollimplementierung mit Karten gemeinsam zu nutzen, erfordern structs eine eigene Protokollimplementierung.
Einführung
Protokolle ermöglichen Polymorphismus in Elixir. Protokolle mit defprotocol
:
defprotocol Log do
def log(value, opts)
end
Implementiere ein Protokoll mit 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
Mit den obigen Implementierungen können wir Folgendes tun:
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
Protokolle ermöglichen das Versenden an einen beliebigen Datentyp, sofern das Protokoll implementiert wird. Dies umfasst einige integrierte Typen wie Atom
, BitString
, Tuples
und andere.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow