elixir 的相同二进制模式匹配在命令行上有不同的表示
Same binary pattern match of elixir got different representations on command line
我是 Elixir 的新手,对下面第 15 行和第 17 行的两个不同输出感到困惑,即,一个是 98
,另一个是 "b"
(来自 offical document).
这两个匹配只是做同样的事情,因为(IMO)<<head, rest::binary>>
与 <<head::binary-size(1), rest::binary>>
相同。为什么他们的输出不同? (我知道它们在内部是一样的)
我正在使用 Windows OS 顺便说一句。
iex(14)> <<head, rest::binary>> = "banana"
"banana"
iex(15)> head
98
iex(16)> <<head::binary-size(1), rest::binary>> = "banana"
"banana"
iex(17)> head
"b"
element in bitstring 的默认类型是 integer
,但是当您明确指定它作为 binary
进行模式匹配时,它将变为 binary
。
iex|1> <<head::integer, rest::binary>> = "banana"
iex|2> head
#⇒ 98
iex|3> <<head>>
#⇒ "b"
我是 Elixir 的新手,对下面第 15 行和第 17 行的两个不同输出感到困惑,即,一个是 98
,另一个是 "b"
(来自 offical document).
这两个匹配只是做同样的事情,因为(IMO)<<head, rest::binary>>
与 <<head::binary-size(1), rest::binary>>
相同。为什么他们的输出不同? (我知道它们在内部是一样的)
我正在使用 Windows OS 顺便说一句。
iex(14)> <<head, rest::binary>> = "banana"
"banana"
iex(15)> head
98
iex(16)> <<head::binary-size(1), rest::binary>> = "banana"
"banana"
iex(17)> head
"b"
element in bitstring 的默认类型是 integer
,但是当您明确指定它作为 binary
进行模式匹配时,它将变为 binary
。
iex|1> <<head::integer, rest::binary>> = "banana"
iex|2> head
#⇒ 98
iex|3> <<head>>
#⇒ "b"