Аз съм съвсем нов за Ruby, но когато търсех документацията на Ruby, намерих и C изходен код, който беше включен в документацията. VALUE
и аз съм съвсем сигурен, че това е struct
, Но какви са качествата на това VALUE struct
и какво всъщност прави това?
Отговори:
11 за отговор № 1Можете да видите дефиницията за 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, има a TYPE()
макрос в същия файл, който може да се използва за идентифициране на типа данни, посочен от a VALUE
.
3 за отговор № 2
В C, променливите имат видове и данните нямат типове. За разлика от променливите Ruby нямат статичен тип, а самите данни имат типове, така че данните трябва да бъдат преобразувани между езиците.
Данните в Ruby са представени от C тип "VALUE" .Всяка стойност на VALUE има свой тип данни.
За да извлечете данни от C от VALUE, трябва да:
1. Определете типа данни на VALUE
2. Конвертирайте VALUE в C данни
За повече информация вижте тук: Basic Knowledge