2014-05-13 4 views
1
I는 다음 패턴 엘릭서 기능 4 절을 지정할

의 튜플 VS 문자열 튜플 VS 번호 목록 VS 문자열 목록 : 문자열 I)에서 번호 의 Ⅱ)에서 iii) 문자열 튜플 iv) 튜플 숫자엘릭서 기능 절 : 숫자

어떻게하면됩니까? 이 아마도 같은

답변

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에서 다시 튜플을 받고 걱정하지 않는다 가정합니다.

+0

튜플을 목록으로 변환하고 목록 기능 만 사용하는 것이 좋습니다. – tldr

+0

이것도 전체 목록/튜플이 문자열이나 숫자 일 것이라는 것을 보장하지는 않는다는 점에 유의해야한다. 보장이 필요한 경우 전체 목록/튜플을 검사하려면 'Enum'의 함수 중 하나를 사용해야한다. . – bitwalker

+0

바로 문자열에 대해 is_binary를 호출하고, 숫자에 대해서는 is_number를, 그렇지 않은 경우에는 is_default를 호출합니다. – tldr