0
我正在研究一種語言翻譯系統,需要翻譯翻譯字段的「地圖」。首先,我需要用一組默認值構建數據結構。如何在Ruby中構建雙重嵌套的散列?
比方說,我有這些變量:
fields = [:title, :description]
languages = [:en, :fr]
我試圖找到最簡單的方法來創建一個哈希看起來像這樣:
{
:detection => {
:title => {
:en => :en,
:fr => :fr
},
:description => {
:en => :en,
:fr => :fr
}
},
# ... other fields
}
我知道我能做到通過迭代fields
變量,並在其中通過使用Ruby的zip
方法構建內部哈希值。然而,我不知道的是,是否有辦法將這兩個領域的外部和內部價值「雙重壓縮」。像{ :detection => fields.zip(languages.zip(languages)) }
(我知道這不是正確的方式來使用zip
,但這是我想到的想法)。
同樣,我可以通過fields
循環來做到這一點,但我很好奇,如果我可以做到這一點不同?
謝謝!
下面是它目前(與循環)來實現:
def build_default_detection_data
fields = [:title, :description]
languages = [:en, :fr]
default = {
detection_map: {},
}
fields.each do |field|
default[:detection_map][field] = Hash[languages.zip(languages)]
end
default
end
謝謝,@Alex。好多了。 –