Kot*_*ote 3 elixir pattern-matching
有没有办法在参数匹配中包含String contains/regex?例如,字符串是"发生了一些错误".但我希望它匹配子串"发生错误".我试过这个,但它不起作用:
defp status({:error, ~r/error happened/}, state) do
end
Run Code Online (Sandbox Code Playgroud)
不可以使用模式匹配或保护功能来完成String包含和Regex匹配.你最好的选择是匹配{:error, error}模式并在函数内部进行字符串匹配,例如cond:
defp status({:error, error}, state) do
cond do
error =~ "error happened" -> ...
...
end
end
Run Code Online (Sandbox Code Playgroud)
模式匹配可以做的是前缀匹配.如果这对您来说足够好,您可以这样做:
defp status({:error, "error happened" <> _}, state) do
Run Code Online (Sandbox Code Playgroud)
这将匹配以"error happened".开头的任何字符串.