如何在Ruby中的字符串插值中获得嵌套哈希值?

如何在Ruby中的字符串插值中获得嵌套哈希值?,ruby,templates,hash,string-interpolation,Ruby,Templates,Hash,String Interpolation,我在ruby中有一个嵌套哈希,如下所示 a={ "a":1,, “b”:2, “c”:{ d:3 } } =>{:a=>1,:b=>2,:c=>{:d=>3} 我设置了a.default=' 如果使用如下字符串插值表达式,如何获得d的值: 将“{c['d']}”放入“%a” 我试过了,但没有成功 将“{c}”放入“%a” {:d=>3} =>零 将“{c['d']}”放入“%a” =>零 将“{c[:d]}”放入“%a” =>零 我需要一些方法来获取a['c']['d']中嵌套的3。前面的

我在ruby中有一个嵌套哈希,如下所示

a={
"a":1,,
“b”:2,
“c”:{
d:3
}
}
=>{:a=>1,:b=>2,:c=>{:d=>3}
我设置了
a.default='

如果使用如下字符串插值表达式,如何获得
d
的值:

将“{c['d']}”放入“%a”
我试过了,但没有成功

将“{c}”放入“%a”
{:d=>3}
=>零
将“{c['d']}”放入“%a”
=>零
将“{c[:d]}”放入“%a”
=>零
我需要一些方法来获取
a['c']['d']
中嵌套的3。前面的两个示例适合我,但它们返回空字符串

注:如果我不使用
a.default='
我会得到错误

将“{c[:d]}”放入“%a”
KeyError:找不到键{c[:d]}
from(pry):45:in`%
我查看了
sprintf
,但这似乎不可能。相关章节转载如下


case'
类字符串
别名old_插值%
def%(x)
如果x是a?搞砸
path=self.split('/').map(&:to_-sym)
开始
x、 挖掘(*路径)
rescue=>错误
结束
其他的
old_插值x
结束
结束
结束
#输入,注意:没有设置'a.default=''`
a={
"a":1,,
“b”:2,
“c”:{
d:3
}
}
#输出
将“c”%a{:d=>3}
将“c/d”%a#3
将“a/d”%a#错误->返回零
您可以将分隔符“/”更改为所需的分隔符:D

更新 若你们想插入字符串,不仅仅是得到散列值

类字符串
别名old_插值%
def%(x)
如果x是a?搞砸
自扫描(/(?错误
#你应该在这里做什么?
确保
result=result.sub(/%{[^}]*}/,value.to_s)
结束
结果
结束
其他的
old_插值x
结束
结束
结束
放置“这里%{c/d}我们%{a}是”%a#这里3我们是1

经过一些尝试和错误后,我认为这是不可能的。有什么原因不能使用更典型的
“#{a[:c][:d]}”
语法吗?谢谢,很好。但是,我不能包含
a
变量的名称(我不喜欢)。类似于您编写的但没有a的东西将是完美的
”#{no-a-reference[:c][:d]}“
我很困惑。您的代码中没有字符串插值吗?