首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有比在C中使用rb_funcall()更常用的初始化Ruby对象的方法呢?

有没有比在C中使用rb_funcall()更常用的初始化Ruby对象的方法呢?
EN

Stack Overflow用户
提问于 2012-09-19 23:15:48
回答 1查看 121关注 0票数 2

为了从我的库中初始化一个类,我这样做:

代码语言:javascript
复制
VALUE obj = rb_funcall(rb_path2class("MyGem::ClassName"),
                rb_intern("new"), 2, arg1, arg2);

感觉像是很多样板代码可以被压缩成一个宏,比如:

代码语言:javascript
复制
VALUE obj = CLASS_INIT("MyGem::ClassName", 2, arg1, arg2)

或者这只是一些我必须自己写的东西,如果它让我如此困扰,重复funcall,path2class和intern?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-19 23:27:45

在Ruby的README.ext中似乎没有记录,但是我在Ruby扩展中用到了一个名为rb_class_new_instance的函数。原型基本上是:

代码语言:javascript
复制
rb_class_new_instance(argc, argv, klass);

它在StringIO.open中使用

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/stringio/rdoc/StringIO.html

你可以在这里看到我是如何使用它的:

https://github.com/DavidEGrayson/ruby-usb-pro/blob/master/ext/device_handle.c

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12497669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档