binary - 相同的 elixir 二进制模式匹配在命令行上有不同的表示
问题描述
我是 Elixir 的新手,对下面 line15 和 line17 的两个不同输出感到困惑,即一个是98
,另一个是"b"
(来自官方文档)。
这两个匹配只是做同样的事情,因为(IMO)<<head, rest::binary>>
与 相同<<head::binary-size(1), rest::binary>>
。为什么它们在输出上有所不同?(我知道它们在内部是一样的)
我正在使用 Windows 操作系统顺便说一句。
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"
解决方案
位串中元素的默认类型是integer
,但是当您明确指定它为模式匹配时binary
,它变为binary
。
iex|1> <<head::integer, rest::binary>> = "banana"
iex|2> head
#⇒ 98
iex|3> <<head>>
#⇒ "b"
推荐阅读
- javascript - 如何以不同的方式再次从 JSON 获取信息?
- c# - 访问数据库连接参数时 SSIS 作业失败
- amazon-web-services - AWS Lambda 访问数据每小时刷新一次
- java - 我无法显示我在 jpanel 中加载的第二张图片
- java - 在 Spring Data 存储库的单元测试中忽略唯一约束
- c# - 无法在 Kubernetes 中从工作连接到服务
- kotlin - 如何以编程方式更改材质卡视图主题样式?
- javascript - 如何在 nodeJs 中使用 stream-json 中的管道写入文件?
- tensorflow - TensorFlow 对象检测:继续训练
- python - 我将数据从 csv 加载到 Python Pandas 并尝试将列设置为行(日期重复)