- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
要从我的库中初始化一个类,我正在这样做:
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_class_new_instance
的函数。原型(prototype)基本上是:
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
关于c - 是否有比在 C 中使用 rb_funcall() 更惯用的方式来初始化 Ruby 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497669/
我的扩展使用 Ruby 库通过接口(interface)发送和接收命令和遥测数据包,并将它们提供给 C 文件传输库进行处理。 收到大量数据包后,我会遇到此段错误。这是 GDB 的回溯。
我不确定我做错了什么。我有一个 Ruby 散列作为此函数的第三个参数传递,Test::test()。 static VALUE nm_test(VALUE self, VALUE str, VALUE
要从我的库中初始化一个类,我正在这样做: VALUE obj = rb_funcall(rb_path2class("MyGem::ClassName"), rb_in
我是一名优秀的程序员,十分优秀!