Как получить «автономный» символ в API расширения C в Ruby - PullRequest
6 голосов
/ 24 декабря 2010

Я хочу вернуть несколько значений из функции C, и имхо, хеш - хороший вариант. Сначала я использовал rb_intern('A_KEY') для создания ключей, но расширение упало. Сейчас я использую rb_str_new2, но я предпочитаю символы.

Как мне создать новый символ и использовать его без ссылки на класс или метод?

1 Ответ

8 голосов
/ 24 декабря 2010

Вам нужно использовать макрос ID2SYM, чтобы преобразовать идентификатор, полученный из rb_intern, в символ рубина. Попробуйте изменить

rb_intern('A_KEY')

до

ID2SYM(rb_intern('A_KEY'))
...