Я новичок в Ruby, но когда я искал документацию Ruby, я также нашел исходный код C, который был включен в документацию. Почти во всех этих ссылках я нашел VALUE
, и я вполне уверен, что это struct
. Но каковы атрибуты этого VALUE struct
и что это на самом деле делает?Что такое тип "VALUE" в исходных файлах Ruby?
ответ
В C переменные имеют типы и данные не имеют типов. Напротив, переменные Ruby не имеют статического типа, а сами данные имеют типы, поэтому данные должны быть преобразованы между языками.
Данные в Ruby представлены C-типом «VALUE». Каждый VALUE-данные имеют тип данных.
Для получения данных C из значения, вам необходимо:
1. Определить тип данных Значение по
2. Преобразование значения в данных C
Для более подробную информацию смотрите здесь: Basic Knowledge
Хорошо, теперь я понял. Каждый тип данных в Ruby имеет соответствующий тип данных в C (или, они превращаются в такие), не так ли? – Sazid
@Sazid Если вы прочитаете документы, которые я связал, все будет очищено. Я верю. –
Вы можете увидеть определение для VALUE
в файле заголовка ruby/ruby.h
:
#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
...
#elif SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long VALUE;
...
#else
# error
#endif
Так значение только указатель на объект. Как описано в ссылке Priti, в этом же файле есть макрос TYPE()
, который может использоваться для идентификации типа данных, на которые указывает VALUE
.
Спасибо за указание файла заголовка :) – Sazid
- 1. Что такое тип * volatile * name = value?
- 2. Что такое (@ {$ value {$ value}}) в perl?
- 3. Что такое [....] в Ruby?
- 4. Ruby-приложение, которое мгновенно отражает изменения в исходных файлах
- 5. Выход Javascript в исходных файлах?
- 6. Что такое тип записи?
- 7. переменная в двух исходных файлах
- 8. Как использовать помощники в исходных файлах Hexo?
- 9. Что такое значение $ value в Angular2?
- 10. Что такое объект Value в PHP?
- 11. Что такое замена переменной .value в javascript?
- 12. Что такое @Value в мире CDI?
- 13. Что такое «тип»?
- 14. Что такое __varmap__ в Ruby?
- 15. Что такое `супер` в Ruby?
- 16. Что такое хеширование в Ruby?
- 17. Что такое "p" в Ruby?
- 18. Что такое репа в Ruby?
- 19. Что такое `hash` в ruby?
- 20. Что такое «главное» в Ruby?
- 21. Что такое $? означает в Ruby?
- 22. Что такое: + и &: + в Ruby?
- 23. Что такое оператор «= ~» в Ruby?
- 24. Что такое ->() {} в Ruby?
- 25. Что такое `&: capitalize` в Ruby?
- 26. Что такое делегирование в Ruby?
- 27. Что такое тип тегов?
- 28. Что такое абстрактный тип?
- 29. Что такое тип?
- 30. Что такое sint32 тип
Любой объект Ruby внутренне выражается в C как тип VALUE. – sawa
Это деталь реализации Ruby. Как разработчик * Ruby *, вам не нужно беспокоиться об этом; основная реализация C очень мало связана с программированием в Ruby. – meagar
Однако, если вы хотите использовать эти знания и иметь базовый C, все это очень доступно. Это то, как большинство из Native Extensions работают на самом деле. См. Http://media.pragprog.com/titles/ruby3/ext_ruby.pdf и/или http://guides.rubygems.org/c-extensions/ –