Как получить ключи из хеша - расширение 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)