Elixir Language
프로토콜
수색…
비고
구조체에 대한 주석
맵으로 프로토콜 구현을 공유하는 대신 구조체에는 자체 프로토콜 구현이 필요합니다.
소개
프로토콜은 Elixir에서 다형성을 가능하게합니다. 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