Elixir函数子句:字符串列表与数字列表vs字符串元组与数字元组

时间:2014-05-13 03:57:32

标签: pattern-matching elixir

我想为具有以下模式的Elixir函数指定4个子句: i)字符串列表 ii)数字列表 iii)字符串元组 iv)数字元组

我该怎么做?

1 个答案:

答案 0 :(得分:3)

可能是这样的事情:

def foo([]),                      do: :empty
def foo([h|t]) when is_binary(h), do: :list_of_strings
def foo([h|t]) when is_number(h), do: :list_of_numbers
def foo(tuple) when is_tuple(tuple) do
  # Convert tuple to list of stuff, then recursively call foo
  tuple |> tuple_to_list |> foo
end

最后一句假设您不关心从foo获取元组。