2014-04-26 2 views
1

누군가가 Elixir에서이 가드 케이스를 교체하도록 도와 줄 수 있습니까?Elixir에서 is_regex 전화를 바꿀 때의 제안

def contains(collection,element) do 
r = case collection do 
     c when is_tuple(c)   -> element in tuple_to_list(c) 
     c when is_list(c)   -> element in c 
     c when is_regex(element)  -> Regex.match?(element, c) 
     c when is_bitstring(element) -> String.contains?(c, element) 
    end 

if (not r), do: Message.fail(collection, element, __ENV__.function) 
end 

감사

답변

3

이 곳에서 당신은 Regex.regex?(element)를 사용할 수 있습니다.

+0

하지만 'Regex.regex?'를 가드 조건으로 사용할 수 없습니까? 그것이 내 전화입니다. –

+0

Erlang (따라서 Elixir)은 경비원에게만 제한된 호출을 허용합니다. http://elixir-lang.org/getting_started/5.html – alxndr

+3

곧 나오는 Elixir 버전에서는 '% Regex { }'. 하지만 지금은 레코드와 구조체 사이에 있기 때문에 이러한 함수에 의존해야합니다. –

관련 문제