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