Ruby 中的联合结构

Union structure in Ruby

我可以在 ruby language 中使用 union 结构吗? Ruby里有union structure吗? 如果有,你能告诉我一个示例代码吗? 或者,如果没有,您能告诉我 ruby 没有联合的原因吗?

编辑: 刚刚添加了下面的示例来澄清不清楚的问题。 :)

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;

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(= Ruby 用 C 编写)使用 C 联合,例如用于数组,具体取决于它们的长度。如果您想了解更多信息,我强烈推荐 Ruby under a microscope