7

我对 Ruby 很陌生,但是当我搜索 Ruby 的文档时,我也发现了一些包含在文档中的 C 源代码。在几乎所有这些参考资料中,我都找到了VALUE并且我很确定它是一个struct. 但是它的属性是VALUE struct什么,它实际上在做什么?

4

2 回答 2

12

VALUE您可以在头文件中看到定义ruby/include/ruby/internal/value.h

#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.

于 2013-05-07T13:41:57.710 回答
3

在 C 中,变量有类型,而数据没有类型。相比之下,Ruby 变量没有静态类型,而数据本身也有类型,因此需要在语言之间转换数据。

Ruby 中的数据由 C 类型“VALUE”表示。每个 VALUE 数据都有其数据类型。

要从 VALUE 中检索 C 数据,您需要:

1.识别VALUE的数据类型

2.将VALUE转换为C数据

更多信息请看这里:Basic Knowledge

于 2013-05-07T13:37:26.697 回答