假设我想通过类似filter
的组合器传递枚举字符列表,以便删除所有类似的字符:
'abc' |> Enum.filter(fn ch -> ch != 'a' end)
这不会返回预期的结果,因为枚举的字符实际上是代码点,这里是97,99和99.所以谓词可以表示为ch != 97
或<<ch::utf8>> != "a"
来实现所需的结果。
在这种情况下是否有更好,更直观的表达谓词的方式?
答案 0 :(得分:6)
您可以使用?
:
iex(1)> 'abc' |> Enum.filter(fn ch -> ch != ?a end)
'bc'
答案 1 :(得分:1)
你也可以这样做:
'abc' |> Enum.filter(fn ch -> [ch] != 'a' end)
虽然我更喜欢使用?a
,但我更喜欢在字符列表中使用二进制文件。