现在我有一系列使用 C 扩展创建的对象,所以说它们是
- 富
- 酒吧
- 巴兹。
我有 ruby 代码实例化它们三个,调用它们的函数并处理结果。让我们称之为:
- 经理
好吧,现在 Manager 是我的瓶颈,所以我想把它变成一个 C 扩展。但我不知道如何从 Manager 中实例化 Foo、Bar 和 Baz。我是否必须使用如下代码:
VALUE module_klass = rb_const_get(rb_cObject, rb_intern("Module"));
VALUE object_klass = rb_const_get(module_klass, rb_intern("Foo"));
然后调用如下方法:
rb_funcall(object_klass, rb_intern("new"), 0);
还是有更清洁的方法?