如何创建 Google::Protobuf::Map 实例 [Ruby]

问题描述 投票:0回答:1

我在 ruby 中有一个 protobuf 对象,它有一个映射作为一个参数。如何创建

Google::Protobuf::Map
?如果我尝试输入标准哈希表,则会收到
Expected Map instance
错误。

--编辑--

在这里找到答案:https://developers.google.com/protocol-buffers/docs/reference/ruby- generated#map-fields,如果有人需要的话。

ruby dictionary hashmap hashtable protocol-buffers
1个回答
0
投票

使用

Google::Protobuf::Map.new
如文档中所述

Map 字段使用一个类似于 Ruby 的特殊类来表示

Hash
Google::Protobuf::Map
)。与常规 Ruby 哈希不同,
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
© www.soinside.com 2019 - 2024. All rights reserved.