我有一个已编译的 Ruby protobuf 消息,像这样:
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_message "PingPacket" do
optional :message_counter, :int32, 1
optional :message_type, :enum, 2, "PingPacket.MessageType"
end
add_enum "PingPacket.MessageType" do
value :REPORT, 0
value :LOW_BATTERY, 1
value :LOCATE_REQUEST, 2
value :CHECK_IN, 3
value :SOS, 4
value :RESTING, 5
value :MOVING, 6
value :EVENT, 7
value :SYSTEM_TEST, 8
end
end
PingPacket = Google::Protobuf::DescriptorPool.generated_pool.lookup("PingPacket").msgclass
PingPacket::MessageType = Google::Protobuf::DescriptorPool.generated_pool.lookup("PingPacket.MessageType").enummodule
我正在尝试获取包含MessageType值的数组。 我已经尝试了显而易见的方法:
PingPacket::MessageType.enums
PingPacket::MessageType.values
PingPacket::MessageType.to_s
但是什么都没用。我该如何获取这些值?