Ruby Fiddle文档中的“struct”是什么?

eivnm1vs  于 2023-05-28  发布在  Ruby
关注(0)|答案(1)|浏览(71)

我很久以前就用过Ruby 1.9,现在我正在尝试Ruby 3.2 Fiddle。我在www.example.com中尝试了以下代码片段README.md,但它在struct上引发了NameError

StudentCollegeDetail = struct [
  'int college_id',
  'char college_name[50]'
]

如何使用struct?它的文档在哪里?

mm5n2pyu

mm5n2pyu1#

好吧,这是个愚蠢的问题。你可以像这样使用struct

require 'fiddle/import'

StudentCollegeDetail = Fiddle::Importer::struct [
  'int college_id',
  'char college_name[50]'
]

文档在这里。
正如Holger所评论的那样,Fiddle::Importer被设计为在这样的模块中用作extend()的参数。

require 'fiddle/import'

module Libc
  extend Fiddle::Importer
  dlload 'libc.so.6'
  typealias 'clockid_t', 'int'
  typealias 'time_t', 'int64_t'
  Timespec = struct [
    'time_t   tv_sec',
    'long     tv_nsec',
  ]
  extern 'int clock_getres(clockid_t clk_id, struct timespec *res);'
end

res = Libc::Timespec.malloc
Libc.clock_getres(Process::CLOCK_REALTIME, res)
p res.tv_nsec

相关问题