2015-05-18 4 views
1

Я ищу, чтобы изменить имя ключевого элемента структуры на основе условия, например, глядя на хэш ниже, на основе условия, построить хэш-структуры вместо структурыкак я могу построить ключевое имя хэша на основе условия

test= 
{ 
    structure: 
    { 
    field1: 12 
    field2: 23 
    } 
} 

Возможно, что-то вроде этого?

test= 
{ 
    cond ? structure: : structures: 
    { 
    field1: 12 
    field2: 23 
    } 
} 
+0

Почему бы не построить массив структур и избавиться от заболевания? – DickieBoy

+0

Исходя из какого состояния? И хэш, который вы указали в своем вопросе, недействителен. Что ты пытаешься сделать? Просьба уточнить. – Surya

ответ

1

Например:

cond = true 
cond = cond ? "structure" : "structures" 

test = { "#{cond}".to_sym => { field1: 12, field2: 23 } } 
#=> {:structure=>{:field1=>12, :field2=>23}} 

cond = false 
cond = cond ? "structure" : "structures" 

test = { "#{cond}".to_sym => { field1: 12, field2: 23 } } 
#=> {:structures=>{:field1=>12, :field2=>23}} 

или

test = { "#{cond ? "structure" : "structures"}".to_sym => { field1: 12, field2: 23 } } 
+0

спасибо человеку !! это сделает для меня ... Я ценю ваше предложение – Bodao

+0

Я рад помочь вам :) – pangpang

0

Вам нужно сделать всего пару небольших изменений в то, что вы предложили:

Для:

cond = true 

получает:

test= 
{ 
    (cond ? :structure : :structures) => 
    { 
    field1: 12, 
    field2: 23 
    } 
} 
    #=> {:structure=>{:field1=>12, :field2=>23}} 

Для:

cond = false 

получает:

test= 
{ 
    (cond ? :structure : :structures) => 
    { 
    field1: 12, 
    field2: 23 
    } 
} 
    #=> {:structures=>{:field1=>12, :field2=>23}} 
Смежные вопросы