Совместима ли карта с повторной парой значений ключей? - PullRequest
1 голос
/ 30 марта 2019

Могу ли я использовать

message Foo {
  map<string, string> foo = 1;
}

вместо

message Foo {
  repeated KeyValuePair foo = 1;
}

message KeyValuePair {
  string key = 1;
  string value = 2;
}

Первый источник находится в proto3, а второй - в proto2.

1 Ответ

1 голос
/ 30 марта 2019

Пока у вас нет дубликатов ключей, они будут очень похожи.Если у вас есть дубликаты ключей, использование карты будет вести себя по-разному, поскольку duplicatws будет вызывать перезапись или исключение (я не могу вспомнить, какой, извините).Также «повторный» обычно реализуется в виде списка / массива / и т. Д., Поэтому: порядок сохраняется.«Карта» обычно реализуется с некоторой структурой карты / словаря, где порядок не , как правило, гарантирован.

Итак: если порядок не имеет значения и у вас всегда есть уникальные ключи: вывсе в порядке.

...