Elixir Language
Protocolos
Buscar..
Observaciones
Una nota sobre las estructuras.
En lugar de compartir la implementación del protocolo con mapas, las estructuras requieren su propia implementación del protocolo.
Introducción
Los protocolos permiten el polimorfismo en el elixir. Definir protocolos con defprotocol
:
defprotocol Log do
def log(value, opts)
end
Implementar un protocolo con 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
Con las implementaciones anteriores, podemos hacer:
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
Los protocolos le permiten enviar a cualquier tipo de datos, siempre que implemente el protocolo. Esto incluye algunos tipos incorporadas tales como Atom
, BitString
, Tuples
, y otros.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow