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