Arrays 数组的点表示法
我得到了一个字符串Arrays 数组的点表示法,arrays,ruby,Arrays,Ruby,我得到了一个字符串'tileBlock.tag.title'和一个如下的散列: { "title"=>"headline", "body"=>"body text", "link"=>"#", "tileBlock"=>{"title"=>"Home", "tag"=>{"title"=>"home", "id"=>45}, "active"=>true} } 有没有办法将'tileBlock.tag.title'转换成类似
'tileBlock.tag.title'
和一个如下的散列:
{
"title"=>"headline",
"body"=>"body text",
"link"=>"#",
"tileBlock"=>{"title"=>"Home", "tag"=>{"title"=>"home", "id"=>45}, "active"=>true}
}
有没有办法将
'tileBlock.tag.title'
转换成类似于'object[:tileBlock][:tag][:title]
的东西?我不确定对象是什么,但是如果它是一个嵌套的散列/数组,并且您想使用s='tileBlock.tag.title>调用对象[:tileBlock][:tag][:title]
,那么
object.dig(*s.split(".").map(&:to_sym))
您可以使用Enumerable#inject
,使用str=“tileBlock.tag.title”
您可以使用Hash的dig()
方法来检索您的值。您只需将字符串转换为键数组:
#Init values
my_string = 'tileBlock.tag.title'
my_hash = {
"title"=>"headline",
"body"=>"body text",
"link"=>"#",
"tileBlock"=>{
"title"=>"Home",
"tag"=>{"title"=>"home", "id"=>45},
"active"=>true
}
}
#The code
my_keys = my_string.split('.')
# => ["tileBlock", "tag", "title"]
my_result = my_hash.dig(*my_keys)
# => "home"
Hash#dig()
文档:不清楚您的意思。'object[:tileBlock][:tag][:title]
[sic]是一个对象吗?该对象扮演什么角色?什么是对象?我猜。dig不是VonRuby2.1的一部分,不是吗@CaillouinDect,dig出现在ruby-2.3中
#Init values
my_string = 'tileBlock.tag.title'
my_hash = {
"title"=>"headline",
"body"=>"body text",
"link"=>"#",
"tileBlock"=>{
"title"=>"Home",
"tag"=>{"title"=>"home", "id"=>45},
"active"=>true
}
}
#The code
my_keys = my_string.split('.')
# => ["tileBlock", "tag", "title"]
my_result = my_hash.dig(*my_keys)
# => "home"