私は言語翻訳システムに取り組んでおり、翻訳するフィールドをどのように翻訳するべきかの「マップ」を構築する必要があります。まず、デフォルトのセットを使ってデータ構造を構築する必要があります。私はこのようになりますハッシュを作成する最も簡単な方法を見つけようとしているRubyで二重ネストされたハッシュを構築するにはどうすればよいですか?
fields = [:title, :description]
languages = [:en, :fr]
:
のは、私はこれらの変数があるとしましょう
{
:detection => {
:title => {
:en => :en,
:fr => :fr
},
:description => {
:en => :en,
:fr => :fr
}
},
# ... other fields
}
私は私が行うことができることを知っていますこれはfields
変数を繰り返し処理することで、Rubyのzip
メソッドを使用して内側のハッシュ値を構築します。しかし、私が知らないのは、これらの2つのフィールドから外側と内側の値を「倍にする」方法があるかどうかです。何か{ :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。ずっといい。 –