gpt4 book ai didi

c - c中ruby Exception类对象的扩展是什么?

转载 作者:行者123 更新时间:2023-11-30 16:00:50 24 4
gpt4 key购买 nike

嗨,我在 c 中有以下代码,它是从 ruby​​ 脚本调用的,

static VALUE myMethod(VALUE self, VALUE exc)
{
int a = TYPE(exc);
printf(" %d ", a );
// Some process on exc
}
void Init_myRuby()
{
VALUE mRuby = rb_define_module("myRuby");
VALUE mException = rb_define_class_under(mRuby, "Exception", rb_eRuntimeError);
rb_define_singleton_method(mRuby, "myMethod", myMethod, 4);
}

以下是ruby客户端脚本的代码,

require 'myRuby'
def raiseExc()
exception = myRuby::Exception.new("status","lasterror","function()","Calling some")
myRuby::myMethod(exception, "Exception message: %s, Exception object %d", "Hi from Exception", 100)
end
raiseExc()

我从 ruby​​ 客户端调用 myMethod() 函数。谁能告诉我如何访问c文件中的异常类对象“exc”及其所有属性。

最佳答案

使用 rb_funcall 调用 exc 对象上的方法。

假设 exc 有一个 #description 方法:

VALUE myVar;
myVar = rb_funcall( exc, rb_intern("description"), 0)

如果您需要指定参数:

VALUE myVar;
myVar = rb_funcall( exc, rb_intern("foobar"), 3,
rb_float_new( 2.5 ),
INT2FIX( 123 ),
rb_str_new2("Hello World")
)

关于c - c中ruby Exception类对象的扩展是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com