2016-01-29 2 views
1

Я создаю объект PB в Haskell, и я не хочу указывать дополнительные поля. Это возможно?Создайте объект protobuf в haskell с необязательными полями

В самом простейшем случае у меня есть поле заголовка с failure_message, которое я хочу в большинстве случаев пусто. У меня есть некоторый код, где задача работника отвечает статус OK:

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

Есть ли способ, чтобы установить все неуказанные поля в настоящее время, как некоторые? В этом случае это не так уж плохо, но когда есть дополнительные поля, это раздражает.

ответ

2

Вы можете сделать рекордное значение, которое имеет уже установленные поля, а затем обновить эту запись.

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

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

Я не совсем уверен, что это то, что вы ищете.

+0

Это, безусловно, улучшение. Мне в основном интересно, есть ли какие-то флаги, которые я могу установить, или трюки, которые я могу использовать, поэтому «Ничего» не используется в неопределенных полях. Я новичок в Haskell, поэтому я ничего не знаю. Досадно создавать сообщения с 10 различными полями, из которых только 1 из них. –

Смежные вопросы