0

drawhand变量是列表。我想将最上面的牌移出平局并将其添加到手牌中。这是功能:

def pick_up_card(draw, hand) do
  [new_card | new_draw ] = draw
  {hand ++ [new_card], new_draw}
end

可以通过包含 [head | 参数列表中的tail]部分:

def pick_up_card([new_card | new_draw], hand) do
  {hand ++ [new_card], new_draw}
end

那会是更惯用的Elixir吗?它会损害可读性吗?我想如果函数定义具有传入列表的名称而不是 Head|Tail 调用,那么以后代码会更容易阅读。

这是个人喜好问题,还是我最好保存那行代码并将 Head|Tail 调用粘贴在函数定义中?

4

1 回答 1

3

在我看来,最好将它放在参数列表中。你可能想写另一个子句

def pick_up_card([], _), do: raise "Nothing to pick"

在不久的将来,不是吗?:) 或者照顾其他特殊情况 - 所以最好从一开始就把它放在标题中。

于 2014-01-12T01:27:28.510 回答