プロトコルバッファバージョン3では、オプションの整数値を持つ最良の方法を理解しようとしています。私が考えることができる最高のタイプは、タイプを作ることです:プロトコルバッファ任意の整数、ゼロと区別
message int64Option {
oneof option {
bool empty = 14;
int64 value = 15;
}
}
これは良い考えですか、それとも良い方法がありますか?
プロトコルバッファバージョン3では、オプションの整数値を持つ最良の方法を理解しようとしています。私が考えることができる最高のタイプは、タイプを作ることです:プロトコルバッファ任意の整数、ゼロと区別
message int64Option {
oneof option {
bool empty = 14;
int64 value = 15;
}
}
これは良い考えですか、それとも良い方法がありますか?
proto3には2つの主なオプションがあります。最初は、あなたが提案のようoneof
を使用することですが、実際にあなただけのoneof
に1つのアイテムを持っている必要があります:あなたはまだvalue
が存在しないか、またはゼロであるかどうかを判断することができるように
oneof option {
int64 value = 15;
}
oneofのフィールドは存在の概念を持っています。もう1つの方法は、google/protobuf/wrappers.protoのラッパー・タイプの1つを使用する方法です。これらのラッパーはそれぞれ、プリミティブ型を取り、それをメッセージにラップします。これは、サブメッセージフィールドが存在するため、状況に役立ちます。ここでInt64
ラッパーは例えば次のようになります。
// Wrapper message for `int64`.
//
// The JSON representation for `Int64Value` is JSON string.
message Int64Value {
// The int64 value.
int64 value = 1;
}
は最後に、考慮すべきもうひとつは、あなたが常にproto2を使用し続けることができるということです。 proto2とproto3の両方のスタイルは、protobufバージョン3.0以上でサポートされており、私たちはproto2を無限にサポートし続ける予定です。
賢い、ありがとう!好奇心のために、 'map'以外の他のパラメータ化された型をサポートする計画はありますか? – acjay
私は現在、他のパラメータ化された型をサポートする計画はないと思います(ただし、既存の繰り返しフィールドはパラメータ化された型のようなものであると主張できます)。 –