如何从hash - ruby​​ c扩展中获取密钥

时间:2014-12-10 16:15:10

标签: ruby ruby-c-extension

我正在寻找一个可以从哈希获取所有密钥的函数,或者我可以循环遍历哈希以一次检索单个密钥。

目前我正在使用硬编码密钥

VALUE option = rb_hash_aref(options, rb_str_new2("some_key"));

2 个答案:

答案 0 :(得分:2)

您可以使用rb_hash_foreachblog post w/an example)使用回调函数迭代键/值对:

void rb_hash_foreach(VALUE, int (*)(ANYARGS), VALUE);

有一个rb_hash_keys in MRI,但它似乎不在任何头文件中,因此使用它可能会有风险。

答案 1 :(得分:1)

你总是可以调用Ruby方法本身:

VALUE keys = rb_funcall(hash, rb_intern("keys"), 0)