你能在 case
中使用正则表达式吗?在 Elixir ?
所以类似这样的事情:
case some_string do
"string" -> # do something
~r/string[\d]+/ -> # do something
_ -> # do something
end
最佳答案
与 case
这是不可能的,但您可以使用 cond
:
cond do
some_string == "string" -> # do something
String.match?(some_string, ~r/string[\d]+/) -> # do something
true -> # do something
end
原因是无法通过为特定值调用特殊函数来 Hook 模式匹配。我猜你从 Ruby 那里得到了这个想法,它通过定义特殊运算符
===
来实现这一点。 .这将被 Ruby 的 case 语句隐式调用,对于正则表达式,它将匹配给定的值。
关于regex - Elixir 案例中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34649321/