2014-04-26 62 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

在即将到来的药剂版本中,你将能够匹配'%{正则表达式}'。但现在,由于我们处于记录和结构之间,所以我们需要依赖这些功能。 –