我是Ruby的新手,但是当我搜索Ruby的文档时,我发现了一些C源代码,它们也包含在文档中。在几乎所有这些参考文献中,我找到了VALUE
,我很确定它是struct
。但是这个VALUE struct
的属性是什么?这实际上是做什么的?
答案 0 :(得分:11)
您可以在标题文件ruby/ruby.h
中看到VALUE
的定义:
#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
...
#elif SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long VALUE;
...
#else
# error
#endif
因此,value只是指向对象的指针。如Priti链接中所述,同一文件中有一个TYPE()
宏,可用于标识VALUE
指向的数据类型。
答案 1 :(得分:3)
在C中,变量有类型,数据没有类型。相比之下,Ruby变量没有静态类型,数据本身也有类型,因此需要在语言之间转换数据。
Ruby中的数据由C类型“VALUE”表示。每个VALUE数据都有其数据类型。
要从VALUE中检索C数据,您需要:
<强> 1。确定VALUE的数据类型
<强> 2。将VALUE转换为C数据
有关详细信息,请查看此处:Basic Knowledge