Implementieren eines Protokolls durch Delegieren an vorhandene Funktionen
Ich lerne Elixir, indem ich ein Brettspiel modelliere, und ich habe diesen Code:
defprotocol Board do
def can_handle_move(self)
def handle_move(self, move)
end
defimpl Board, for: List do
def can_handle_move(self), do: Enum.empty?(self)
def handle_move(self, move), do: List.delete(self, move)
end
Die Implementierung sieht komplizierter aus als sie wirklich ist. Tatsächlich,can_handle_move
ist nurEnum.empty?
undhandle_move
ist nurList.delete
. Hat Elixir eine Möglichkeit, dies auszudrücken? So etwas wie:
defimpl Board, for: List do
def can_handle_move = &Enum.empty?/1
def handle_move = &List.delete/2
end
... was nicht kompiliert. Ich habe es auch ohne versuchtdef
s.