使用Ruby C API在模块中定义类

使用Ruby C API在模块中定义类,第1张

概述我试图用 Ruby C API在模块定义一个类.但是,我在网上看到的这种方式对我来说似乎并不适用.具体来说,顶层模块已创建,但在模块内找不到类.这是我的C档案: #include <ruby.h>static VALUE mTree;static VALUE cNode;VALUE hello_world(VALUE klass){ return rb_str_new2("h 我试图用 Ruby C API在模块内定义一个类.但是,我在网上看到的这种方式对我来说似乎并不适用.具体来说,顶层模块已创建,但在模块内找不到类.这是我的C档案:

#include <ruby.h>static VALUE mTree;static VALUE cNode;VALUE hello_world(VALUE klass){    return rb_str_new2("hello world");}voID Init_tree(){  mTree = rb_define_module("Tree");  cNode = rb_define_class_under(mTree,"Node",rb_cObject);   rb_define_method(cNode,"hello_world",hello_world,0);}

这是我的extconf.rb:

require 'mkmf'create_makefile('tree')

这是我的测试脚本:

require 'tree'puts Tree        # => Treeputs Tree::Node  # => uninitialized constant Tree::Node (nameError)

有人可以帮忙吗?

解决方法 这很奇怪,你的例子适合我:

→ ruby extconf.rb     creating Makefile→ make          linking shared-object tree.bundle→ irb>> $:<<'.'=> [...]>> require 'tree'=> true>> Tree=> Tree>> Tree.class=> Module>> Tree::Node.class=> Class>> Tree::Node.new.hello_world=> "hello world"
总结

以上是内存溢出为你收集整理的使用Ruby C API在模块中定义类全部内容,希望文章能够帮你解决使用Ruby C API在模块中定义类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存