有没有比在C中使用rb_funcall()更惯用的方法来初始化Ruby对象?
要从我的库中初始化类,我将执行以下操作:有没有比在C中使用rb_funcall()更惯用的方法来初始化Ruby对象?,c,ruby,C,Ruby,要从我的库中初始化类,我将执行以下操作: VALUE obj = rb_funcall(rb_path2class("MyGem::ClassName"), rb_intern("new"), 2, arg1, arg2); 感觉很多样板代码都可以压缩成如下宏: VALUE obj = CLASS_INIT("MyGem::ClassName", 2, arg1, arg2) 或者这只是我自己写的东西,如果它困扰了我那么多,重复funcall、path2cla
VALUE obj = rb_funcall(rb_path2class("MyGem::ClassName"),
rb_intern("new"), 2, arg1, arg2);
感觉很多样板代码都可以压缩成如下宏:
VALUE obj = CLASS_INIT("MyGem::ClassName", 2, arg1, arg2)
或者这只是我自己写的东西,如果它困扰了我那么多,重复funcall、path2class和intern?它似乎没有在Ruby的
README.ext
中记录,但我在Ruby扩展中使用了一个名为rb\u class\u new\u instance
的函数。原型基本上是:
rb_class_new_instance(argc, argv, klass);
它用于StringIO.open
:
你可以在这里看到我是如何使用它的:
Ruby的
README.ext中似乎没有记录它,但我在Ruby扩展中使用了一个名为rb\u class\u new\u instance的函数。原型基本上是:
rb_class_new_instance(argc, argv, klass);
它用于StringIO.open
:
你可以在这里看到我是如何使用它的: