我正在通过模拟一款棋盘游戏来学习Elixir,以下是我的代码:
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
实现看起来比实际要复杂。其实,can_handle_move
只是Enum.empty?
,handle_move
只是List.delete
。Elixir有表达这种方式的方法吗?类似于:
defimpl Board, for: List do
def can_handle_move = &Enum.empty?/1
def handle_move = &List.delete/2
end
...这段代码无法编译。我也尝试了没有使用def
的代码。