Как мне написать протокол по типам String? - PullRequest
2 голосов
/ 25 сентября 2019

Я пытаюсь написать протокол для типов String:

defprotocol MyString do
  def from(data)
end

defimpl MyString, for: String do
  def from(string) do
    String.replace(string, ",", "-")
  end
end

Это компилируется, но когда я пытаюсь вызвать MyString.from для строки, я получаю

iex> MyString.from("foo,")

protocol MyString not implemented for "foo,", This protocol is implemented for: String

Я получаю эту ошибку, если реализую протокол для String.t, String.Chars и т. Д. Как мне это сделать?

1 Ответ

3 голосов
/ 25 сентября 2019

Список поддерживаемых типов протоколов можно найти здесь: https://hexdocs.pm/elixir/Protocol.html

Вы можете использовать BitString для создаваемого протокола.

...