0

我正在使用在 ruby​​ 代码库的 array.c 中找到的许多数组方法,但是在尝试调用时

VALUE rIntersection = rb_ary_and(rAry1, rAry2); 

我收到了这个错误:

dyld: lazy symbol binding failed: Symbol not found: _rb_ary_and
  Referenced from: ./ext/ev/counters.bundle
  Expected in: flat namespace

在我的代码的其他区域,我正在使用 rb_ary_sort_bang、rb_ary_clear、rb_ary_reverse 等。所以我不确定为什么 rb_ary_and 有什么不同。

4

2 回答 2

2

看看http://www.ruby-doc.org/doxygen/1.8.4/array_8c-source.html(第2666行)

在那里你可以看到方法 rb_ary_and 被声明为static。这意味着它仅在array.c内部可见。

于 2011-07-02T16:57:22.520 回答
1

未经测试,但我认为这会起作用:

rb_funcall( rAry1, rb_intern("&"), 1, rAry2 )

于 2012-03-09T15:28:08.610 回答