假设我想通过组合器传递一个枚举的char列表filter,以便删除所有类似的:
'abc' |> Enum.filter(fn ch -> ch != 'a' end)
Run Code Online (Sandbox Code Playgroud)
这不会返回预期的结果,因为枚举的字符实际上是代码点,这里是97,99和99.所以谓词可以表示为ch != 97或者<<ch::utf8>> != "a"达到预期的结果.
在这种情况下是否有更好,更直观的表达谓词的方式?
你可以使用?这个:
iex(1)> 'abc' |> Enum.filter(fn ch -> ch != ?a end)
'bc'
Run Code Online (Sandbox Code Playgroud)