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"