次のようなハッシュが与えられます:
AppConfig = {
'service' => {
'key' => 'abcdefg',
'secret' => 'secret_abcdefg'
},
'other' => {
'service' => {
'key' => 'cred_abcdefg',
'secret' => 'cred_secret_abcdefg'
}
}
}
ある場合にはservice/keyを返し、他の場合にはother / service/keyを返す関数が必要です。簡単な方法は、次のようにハッシュとキーの配列を渡すことです。
def val_for(hash, array_of_key_names)
h = hash
array_of_key_names.each { |k| h = h[k] }
h
end
この呼び出しの結果が「cred_secret_abcdefg」になるように:
val_for(AppConfig, %w[other service secret])
val_for()で書いたものよりも良い方法があるはずです。