2016-12-03 7 views
1

Могу ли я использовать структуру union в ruby language? Есть ли в Ruby union structure? Если есть, не могли бы вы показать мне пример кода? Или, если нет, не могли бы вы рассказать мне, почему у рубина нет союза?Структура союза в Ruby

+2

Вы спрашиваете о структурах профсоюзов C, которые имеют свои данные, сопоставленные с одним и тем же адресом? Или типы «союза» типа Haskell, более известные как «тип суммы» или «помеченный союз»? Или вы спрашиваете о чем-то подобном ключевому слову SQL SQL, с которым вы отметили этот вопрос. –

+0

Я имею в виду, что тип C структур объединения, которые имеют данные с тем же адресом. Спасибо вам. –

+0

Я не могу сказать со 100% уверенностью, но я уверен, что Ruby не имеет ничего подобного. Основная причина в том, что в Ruby вы не управляете своей памятью программ вручную, вы позволяете интерпретатору ruby ​​делать это за вас. Теперь внутренне Ruby может использовать союзы для оптимизации. –

ответ

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 

ПРИМЕЧАНИЕ: МРТ (рубин = Ruby, написанный на C) использует C Unions, например для массивов, в зависимости от их длины. Если вы хотите получить дополнительную информацию, я настоятельно рекомендую Ruby under a microscope.

Смежные вопросы