2014-04-26 102 views
1
的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

正確,二郎(因此藥劑)只允許有限的一組中後衛電話:http://elixir-lang.org/getting_started/5.html – alxndr

+3

在即將到來的藥劑版本中,你將能夠匹配'%{正則表達式}'。但現在,由於我們處於記錄和結構之間,所以我們需要依賴這些功能。 –