【问题标题】:How do you write a codec for Rebol 3?你如何为 Rebol 3 编写编解码器?
【发布时间】:2013-01-16 18:17:52
【问题描述】:

我写了一个JSON encoder/decoder for Rebol 2。我正在为 Rebol 3 重写它,并希望在 Rebol 3 中以codec 的形式提供它:

load %data.json
save %data.json object
decode 'json to-binary {["some","json"]}

我该怎么办?

在询问时,关于这个主题的文档很少。

【问题讨论】:

    标签: rebol rebol3


    【解决方案1】:

    简单的答案是你不能。至于为什么,有几个答案。

    1. 当前的编解码器模型未记录。目前只有 Carl 知道如何编写编解码器。虽然有人可能能够查看源代码并找出答案,但目前还没有。
    2. 当前的编解码器功能不够灵活,无法在这里制作您想要的东西。您可以制作解码器,但不能制作编码器,因为encode 只接收图像、二进制文件或字符串。不过,也许仅仅拥有一个解码器就足够了。
    3. 当前型号仅支持本机编解码器。您不能在 Rebol 代码中编写编解码器,对于解析器,这意味着您不能使用 parse。您有解析器的本机代码版本吗?
    4. 当前的编解码器模型是我们希望最终拥有的编解码器模型的占位符。这就是为什么它没有得到很好的记录。我们最终希望支持增量编码/解码、可以直接从文件或其他端口读取的编解码器以及 Rebol 编解码器。但是,除了最初的批评之外,我们还没有真正决定最终模型,甚至还没有开始讨论如何设计它。

    我希望你的问题现在有更好的答案。

    【讨论】:

    • 有没有发生过(当前可读的)讨论的地方?
    【解决方案2】:

    编解码器在 imo 中处于高度未完成状态。我提出需要某种流式机制,IIRC Carl 理解这种需求,但解决方案从未在 imo 中概述过。任务同上 - 当前的“实施”与 Carl 对 R3 任务的设想相去甚远……

    【讨论】:

    • 他是源头。 Pekr 和我在最初从事 R3 工作的团队中。他的角色更多的是指出我们搞砸或做得不对的事情——这不是侮辱,他实际上真的很擅长,一个人的焦点小组。他最初指出了当前编解码器模型中的缺陷,并对新模型必须具有的功能提出了初步建议,而当前模型没有。你可以相信他的话。
    【解决方案3】:

    有一个工具,读这个:http://rebol2.blogspot.it/2012/12/json.html

    还有这个: http://www.rebol.com/article/0522.html

    虽然 json 是一种处理数据的复杂方式,但我认为 rebol 块是完美的。

    【讨论】:

    • Max,他已经有了 JSON 解析器;他在他的问题中将其联系起来。问题是关于将 JSON 解析器更改为 R3 的编解码器。
    【解决方案4】:

    我刚刚注意到 system/catalog/codecs 已从 Rebol 3 中删除;所以我认为该功能在 2009 年 3 月 31 日之后被删除。

    >> ? system/catalog
    SYSTEM/CATALOG is an object of value:
     datatypes       block!    length: 56
     actions         block!    length: 56
     natives         block!    length: 159
     errors          object!   [Throw Note Syntax Script Math Access Command...
     reflectors      block!    length: 6
     boot-flags      block!    length: 18
    

    【讨论】:

    • 不,我们只是对系统进行了几次重组; system/catalog/codecs 在某个时候变成了system/codecs,甚至具有相同的结构。功能还在。然而,我们从来没有让夹层编解码器成为可能,即使是从一开始。
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多