haskell - 在 haskell 中构建带有可选字段的 protobuf 对象

标签 haskell protocol-buffers

我正在 Haskell 中构建 PB 对象,并且我不想指定可选字段。这可能吗?

在最简单的情况下,我有一个 header 字段,其中包含一个 failure_message,在大多数情况下我希望该字段为空。我有一些代码,其中工作任务以 OK 状态响应:

        let repMsg = ProtoMsg.WorkerResponse.WorkerResponse {
            header = ProtoMsg.ReqResponse.ReqResponse {
                ProtoMsg.ReqResponse.status = Just ProtoMsg.Status.OK,
                failure_message = Nothing
            }
        }

有没有办法将所有未指定的字段设置为Nothing?在这种情况下,情况还不错,但是当有更多可选字段时,它会变得烦人。

最佳答案

您可以创建一个已设置了所需字段的记录值,然后更新该记录。

noFailureMsg = ProtoMsg.ReqResponse.ReqResponse {
            failure_message = Nothing
        }

let repMsg = ProtoMsg.WorkerResponse.WorkerResponse {
    header = noFailureMsg {
        ProtoMsg.ReqResponse.status = Just ProtoMsg.Status.OK
    }
}

我不完全确定这就是您正在寻找的东西。

关于haskell - 在 haskell 中构建带有可选字段的 protobuf 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090702/

相关文章:

haskell - 为什么关联类型同义词不暗示约束

haskell - 如何读取 Haskell 的 `ap zip tail` 表示 `\x -> zip x (tail x)` ?

haskell - Literate Haskell 中的条件编译

haskell - 这个双仿函数子集有名字吗?

java - protobuf3 将 java 对象序列化为 json ,该对象有一个 int32 字段,值为 0

protocol-buffers - protobufs 格式的原始解码器

datetime - 在 Protocol Buffer 中使用小数和日期时间的最佳方法是什么?

haskell - 在 Haskell 中反转二进制数

java - 使用 Java 在普通 TCP 客户端和 Netty 服务器之间交换 Protobuf 消息

python - 如何在 python 中编程 Protocol Buffer 以通过套接字发送消息