Ruby中的联盟结构

时间:2016-12-03 16:32:21

标签: ruby structure unions

我可以在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;

1 个答案:

答案 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