【发布时间】:2017-01-09 18:02:17
【问题描述】:
我正在尝试做这样的事情,但我无法理解如何在我的 C 代码中使用 Ruby 内部结构。
static VALUE func_get_date_object(VALUE self, VALUE vdate){
VALUE rb_date;
VALUE date;
rb_date = rb_funcall(rb_intern("Date"), rb_intern("new"), 0);;
date = rb_funcall(rb_date, rb_intern("parse"), 0);
return date;
}
我想要做的是将 vdate 作为字符串传递给 Date.parse('yyyy-mm-dd')
但首先我认为我需要知道如何在 C 中为 Ruby 创建或实例化一个新的 Date 类对象。请问我该怎么做?
我为执行此操作的代码编写了一个测试。
def test_date
assert_equal('', @t.date(@t_date_str))
end
输出是
NoMethodError: undefined method `new' for 18709:Fixnum
【问题讨论】:
-
该代码等同于
Date.new.parse,这可能不是您想要的。 -
该代码甚至无法编译,所以我想要的只是新的 Date 对象,以便我可以相应地使用它。我一直在寻找某种例子,但没有运气,所以即使只是一个链接也会很酷。
-
等待它编译,但我的测试有 NoMethodError: undefined method `new' for 18709:Fixnum
标签: c ruby class datetime ruby-c-extension