我在 ruby 中有一个 protobuf 对象,它有一个映射作为一个参数。如何创建
Google::Protobuf::Map
?如果我尝试输入标准哈希表,则会收到 Expected Map instance
错误。
--编辑--
在这里找到答案:https://developers.google.com/protocol-buffers/docs/reference/ruby- generated#map-fields,如果有人需要的话。
使用
Google::Protobuf::Map.new
如文档中所述:
Map 字段使用一个类似于 Ruby 的特殊类来表示
(Hash
)。与常规 Ruby 哈希不同,Google::Protobuf::Map
是 使用特定类型的键和值构造并期望所有 映射的键和值具有正确的类型。Map
int_string_map = Google::Protobuf::Map.new(:int32, :string)
# Returns nil; items is not in the map.
print int_string_map[5]
# Raises TypeError, value should be a string
int_string_map[11] = 200
# Ok.
int_string_map[123] = "abc"
message.int32_string_map_field = int_string_map