我是Ruby的新手,但是当我搜索Ruby的文档时,我发现了一些C源代码,它也包含在文档中.在几乎所有这些参考文献中,我发现了VALUE,我很确定它是一个struct.但是这有什么属性,VALUE struct这实际上是做什么的?
Jus*_*ier 12
您可以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
Run Code Online (Sandbox Code Playgroud)
所以value只是指向对象的指针.如Priti链接TYPE()中所述,同一文件中有一个宏可用于标识a指向的数据类型VALUE.
在 C 语言中,变量有类型,而数据没有类型。相比之下,Ruby 变量没有静态类型,并且数据本身也有类型,因此数据需要在语言之间进行转换。
Ruby 中的数据由 C 类型“VALUE”表示。每个 VALUE 数据都有其数据类型。
要从 VALUE 检索 C 数据,您需要:
1. 识别VALUE的数据类型
2. 将VALUE转换为C数据
欲了解更多信息,请看这里:Basic Knowledge