类 Fiddle::Closure::BlockCaller

扩展 Fiddle::Closure 以允许在块中构建闭包

公共类方法

new(ctype, args, abi = Fiddle::Function::DEFAULT, &block) 点击切换源代码

描述

构造一个新的 BlockCaller 对象。

  • ctype 是要返回的 C 类型

  • args 传递给回调

  • abi 是闭包的 abi

如果在准备 ffi_cifffi_prep_closure 时出现错误,则会引发 RuntimeError。

示例

include Fiddle

cb = Closure::BlockCaller.new(TYPE_INT, [TYPE_INT]) do |one|
  one
end

func = Function.new(cb, [TYPE_INT], TYPE_INT)
调用超类方法 Fiddle::Closure::new
# File fiddle/lib/fiddle/closure.rb, line 60
def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block
  super(ctype, args, abi)
  @block = block
end

公共实例方法

call(*args) 点击切换源代码

调用构造的 BlockCaller,并使用 args

有关示例,请参见 Fiddle::Closure::BlockCaller.new

# File fiddle/lib/fiddle/closure.rb, line 69
def call *args
  @block.call(*args)
end