2

我正在使用非常棒的ruby​​ ffi库来访问 ruby​​ 中 ac 库中的函数。

有没有办法迭代 Ruby FFI::Struct 的布局?

示例 FFI::结构:

class Example < FFI::Struct
  layout :name, string,
         :desc, :string,
         :type, :int,
         :value, :string
end

这似乎不起作用,但类似于下面的伪代码:

example_struct.each_key do |key|
  puts key
end
4

2 回答 2

3

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

从那里,您还可以获得每个成员Struct::values的值、每个成员Struct::offsets的偏移量以及其他一些方法。

于 2010-03-19T16:16:37.150 回答
0

肯定比遍历 Struct 的成员要贵一点,但您也可以将其转换为带有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}
于 2016-10-25T20:50:51.537 回答