org.jruby.RubyClass.define_method()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(3.8k)|赞(0)|评价(0)|浏览(82)

本文整理了Java中org.jruby.RubyClass.define_method方法的一些代码示例,展示了RubyClass.define_method的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.define_method方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称:RubyClass
方法名:define_method

RubyClass.define_method介绍

暂无

代码示例

代码示例来源:origin: org.jruby/jruby-complete

@JRubyMethod(required = 1, optional = 1, reads = VISIBILITY)
public static IRubyObject define_singleton_method(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
  if (args.length == 0) {
    throw context.runtime.newArgumentError(0, 1);
  }
  RubyClass singleton_class = recv.getSingletonClass();
  if (args.length > 1) {
    IRubyObject arg1 = args[1];
    if (context.runtime.getUnboundMethod().isInstance(arg1)) {
      RubyUnboundMethod method = (RubyUnboundMethod) arg1;
      RubyModule owner = (RubyModule) method.owner(context);
      if (owner.isSingleton() &&
        !(recv.getMetaClass().isSingleton() && recv.getMetaClass().isKindOfModule(owner))) {
        throw context.runtime.newTypeError("can't bind singleton method to a different class");
      }
    }
    return singleton_class.define_method(context, args[0], args[1], block);
  } else {
    return singleton_class.define_method(context, args[0], block);
  }
}

代码示例来源:origin: org.jruby/jruby-core

@JRubyMethod(required = 1, optional = 1, reads = VISIBILITY)
public static IRubyObject define_singleton_method(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
  if (args.length == 0) {
    throw context.runtime.newArgumentError(0, 1);
  }
  RubyClass singleton_class = recv.getSingletonClass();
  if (args.length > 1) {
    IRubyObject arg1 = args[1];
    if (context.runtime.getUnboundMethod().isInstance(arg1)) {
      RubyUnboundMethod method = (RubyUnboundMethod) arg1;
      RubyModule owner = (RubyModule) method.owner(context);
      if (owner.isSingleton() &&
        !(recv.getMetaClass().isSingleton() && recv.getMetaClass().isKindOfModule(owner))) {
        throw context.runtime.newTypeError("can't bind singleton method to a different class");
      }
    }
    return singleton_class.define_method(context, args[0], args[1], block);
  } else {
    return singleton_class.define_method(context, args[0], block);
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

@JRubyMethod(required = 1, optional = 1, compat = RUBY1_9)
public static IRubyObject define_singleton_method(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
  if (args.length == 0) {
    throw context.runtime.newArgumentError(0, 1);
  }
  RubyClass singleton_class = recv.getSingletonClass();
  if (args.length > 1) {
    IRubyObject arg1 = args[1];
    if (context.runtime.getUnboundMethod().isInstance(args[1])) {
      RubyUnboundMethod method = (RubyUnboundMethod)arg1;
      RubyModule owner = (RubyModule)method.owner(context);
      if (owner.isSingleton() &&
        !(recv.getMetaClass().isSingleton() && recv.getMetaClass().isKindOfModule(owner))) {
        throw context.runtime.newTypeError("can't bind singleton method to a different class");
      }
    }
    return singleton_class.define_method(context, args[0], args[1], block);
  } else {
    return singleton_class.define_method(context, args[0], block);
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

@JRubyMethod(required = 1, optional = 1, compat = RUBY1_9)
public static IRubyObject define_singleton_method(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
  if (args.length == 0) {
    throw context.runtime.newArgumentError(0, 1);
  }
  RubyClass singleton_class = recv.getSingletonClass();
  if (args.length > 1) {
    IRubyObject arg1 = args[1];
    if (context.runtime.getUnboundMethod().isInstance(args[1])) {
      RubyUnboundMethod method = (RubyUnboundMethod)arg1;
      RubyModule owner = (RubyModule)method.owner(context);
      if (owner.isSingleton() &&
        !(recv.getMetaClass().isSingleton() && recv.getMetaClass().isKindOfModule(owner))) {
        throw context.runtime.newTypeError("can't bind singleton method to a different class");
      }
    }
    return singleton_class.define_method(context, args[0], args[1], block);
  } else {
    return singleton_class.define_method(context, args[0], block);
  }
}

相关文章

微信公众号

最新文章

更多

RubyClass类方法