Elixir 中的“?\s”是什么意思?

Xer*_*rus 2 string char elixir

在涵盖理解的 Elixir 文档中,我遇到了以下示例:

iex> for <<c <- " hello world ">>, c != ?\s, into: "", do: <<c>>
"helloworld"
Run Code Online (Sandbox Code Playgroud)

我现在有点理解整个表达式,但我无法弄清楚“?\ s”是什么意思。我知道它以某种方式匹配并因此过滤掉了空格,但这就是我的理解结束的地方。

编辑:我现在已经发现它解析为 32,这是一个空格的字符代码,但我仍然不知道为什么。

Ale*_*kin 7

具有由美元符号表示的字符文字。

Erlang/OTP 22 [erts-10.6.1] [...]

Eshell V10.6.1  (abort with ^G)
1> $\s == 32.
%%? true
Run Code Online (Sandbox Code Playgroud)

具有 char 文字的方式相同,根据代码文档,其行为与erlang char 文字完全相同:

这正是 Erlang 对 Erlang 字符文字 ($a) 所做的。


基本上,?\s(问号后跟一个空格)完全相同。

#               ? space here
iex|1 ? ?\s == ? 
warning: found ? followed by code point 0x20 (space), please use ?\s instead
Run Code Online (Sandbox Code Playgroud)

没有什么特别的?\s,你可能会看到:

for <<c <- " hello world ">>, c != ?o, into: "", do: <<c>> 
#? " hell wrld "
Run Code Online (Sandbox Code Playgroud)

此外,也使用?c字符文字表示法:

main> ?\s == ' '
#? true
Run Code Online (Sandbox Code Playgroud)