模仿 Perl 的打包/解包功能的 Clojure 惯用方式

问题描述 投票:0回答:1

在 Perl 中,

pack
unpack
是根据用户定义的模板转换二进制数据的两个函数。

以下是这些功能的教程: https://perldoc.perl.org/perlpacktut#The-Basic-Principle

这两个函数执行相同操作的 Clojure 惯用方式是什么?

clojure pack unpack
1个回答
0
投票

人们在 Clojure 中发明自己的序列化格式并不常见。相反,最常见的解决方案是将现有数据结构序列化为文本/二进制并返回。

Clojure 的内置版本是 EDN 格式,它是 clojure 本身的子集。

(pr-str {:foo "bar"})
给你
"{:foo \"bar\"}"
clojure.edn/read-string
该字符串会返回原始地图。

如果您喜欢更紧凑、性能更高的变体,那么 transit 是一个不错的选择。与 EDN 的原理相同,因为它具有对所有 CLJ 数据结构的完全内置支持,并且可以针对自定义类型进行扩展。

如果您确实想使用自己的自定义二进制格式,则可以分别使用 java.io.DataOutputStream 和 DataInputStream。当然,还有很多库可以进一步简化/抽象。

© www.soinside.com 2019 - 2024. All rights reserved.