繁体   English   中英

为什么我可以直接使用某些 ruby C 扩展数组方法,而不能直接使用其他方法?

[英]Why am I able to directly use some of the ruby C extension array methods, but not others?

我正在使用 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 有什么不同。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM