首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Fiddle::Closure::BlockCaller

Parent:Fiddle::Closure

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

公共类方法

new(ctype, args, abi = Fiddle::Function::DEFAULT, &block) Show source

描述

构建一个新的BlockCaller对象。

  • ctype 是要返回的C类型
  • args 已通过回调
  • abi 是关闭的abi

如果在准备ffi_cif或ffi_prep_closure时出错,则会引发RuntimeError。

代码语言:javascript
复制
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

代码语言:javascript
复制
# File ext/fiddle/lib/fiddle/closure.rb, line 34
def initialize ctype, args, abi = Fiddle::Function::DEFAULT, &block
  super(ctype, args, abi)
  @block = block
end

公共实例方法

call(*args) Show source

用args调用构造的BlockCaller

例如see :: new

代码语言:javascript
复制
# File ext/fiddle/lib/fiddle/closure.rb, line 43
def call *args
  @block.call(*args)
end

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com