遍历Ruby FFI Struct布局

3
我使用非常棒的ruby ffi库在Ruby中访问C库中的函数。是否有一种方法可以遍历Ruby FFI::Struct的布局?以下是一个FFI::Struct示例:
class Example < FFI::Struct
  layout :name, string,
         :desc, :string,
         :type, :int,
         :value, :string
end

这似乎无法正常工作,但类似下面的伪代码可能有所帮助:
example_struct.each_key do |key|
  puts key
end
2个回答

3

查看struct.rb的源代码,我发现你可以调用Struct::members来获取你定义为“keys”的符号数组。

此外,您还可以使用Struct::values获取每个成员的值,Struct::offsets获取每个成员的偏移量以及其他一些方法。


0

虽然比遍历结构体成员稍微贵一些,但您也可以使用to_h将其转换为哈希表。

Foo = Struct.new(:a, :b, :c)
=> Foo
baz = Foo.new(1,2,3)
=> #<struct Foo a=1, b=2, c=3>
baz.to_h
=> {:a=>1, :b=>2, :c=>3}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接