Как получить ключи из хеша - расширение ruby ​​c

Я ищу функцию, которая может получить мне все ключи из хэша или я могу перебрать хэш, чтобы получить один ключ за раз.

В настоящее время я жестко закодировал ключ

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

2 ответа

Вы можете перебирать пары ключ / значение с помощью функции обратного вызова, используя rb_hash_foreach ( сообщение в блоге с примером):

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

Есть rb_hash_keys в МРТ, но, похоже, его нет ни в каких заголовочных файлах, поэтому его использование может быть рискованным.

Вы всегда можете сделать вызов самого метода Ruby:

VALUE keys = rb_funcall(hash, rb_intern("keys"), 0)
Другие вопросы по тегам