我可以在union
中使用ruby language
结构吗?
Ruby中有union structure
吗?
如果有,你能告诉我一个示例代码吗?
或者,如果没有,你能告诉我红宝石没有联盟的原因吗?
编辑: 刚刚添加了以下示例,以澄清尚不清楚的问题。 :)
struct byte_nibbles {
unsigned char b1: 4;
unsigned char b2: 4;
unsigned char b3: 4;
unsigned char b4: 4;
unsigned char b5: 4;
unsigned char b6: 4;
unsigned char b7: 4;
unsigned char b8: 4; };
};
union {
unsigned long var;
struct byte_nibbles b;
} u;
答案 0 :(得分:1)
Ruby是动态的,并为您进行内存管理。
所以如果你需要这种C联盟:
union Data {
int i;
float f;
char str[20];
} data;
你实际上不需要在Ruby中定义任何东西,只需使用它:
data = 3
puts data
data = 3.14159
puts data
data = "Ruby"
puts data
# =>
# 3
# 3.14159
# Ruby
注意:MRI Ruby(=用C语言编写的Ruby)使用C Unions,例如Arrays,具体取决于它们的长度。如果您想了解更多信息,我强烈推荐Ruby under a microscope。