一个树形结构数据,用ruby递归给节点新增一个层级的key

如果你已经有一个树形结构的数据,并且想为每个节点递归地新增一个层级的 key,可以使用递归函数来处理。

以下是一个示例代码,演示如何使用 Ruby 递归为树形结构的节点新增一个层级的 key:

def add_level_key(node, level)
  node['level'] = level

  if node['children'] && !node['children'].empty?
    node['children'].each { |child| add_level_key(child, level + 1) }
  end
end

# 假设你已经有一个表示树形结构的数据
tree_data = {
  'name' => 'Root',
  'children' => [
    {
      'name' => 'Node 1',
      'children' => [
        {
          'name' => 'Subnode 1',
          'children' => [
            {
              'name' => 'Subsubnode 1',
              'children' => []
            }
          ]
        },
        {
          'name' => 'Subnode 2',
          'children' => []
        }
      ]
    },
    {
      'name' => 'Node 2',
      'children' => []
    }
  ]
}

# 调用递归函数为节点新增层级的 key
add_level_key(tree_data, 0)

# 打印带有层级的树形结构
def print_tree(node)
  node['children'].each { |child| print_tree(child) } if node['children']
end

print_tree(tree_data)

在上述代码中,我们定义了一个 add_level_key 的递归函数,它接受一个节点和当前层级作为参数。函数会为该节点新增一个名为 level 的 key,值为当前层级。如果节点有子节点,则递归地为每个子节点调用该函数,并将层级加一。

然后,我们创建了一个表示树形结构的数据 tree_data。调用 add_level_key 函数,将根节点和初始层级 0 作为参数。最后,使用 print_tree 函数打印带有层级的树形结构。

请注意,上述代码中的数据结构是基于 Hash 的,你可以根据实际情况进行修改,适应其他类型的数据结构。

在SketchUp中需要rubygems

我一直试图在网上搜索如何在SketchUp中使用rubygems,但一直没有找到具体的方法。下面是我在C:programfilesgoogle SketchUp 8中的插件插件宝石.rb:$: (eval):14C:/Ruby186/lib/ruby/1.8/thread.rb:5C:/Ruby186/lib/ruby/site_ruby/1.8/rubygems.rb:11:in require\"C:/Ruby186/lib/ruby/site_ruby/1.8/rubygems.rb:11(eval)...

日期:2021-06-29 00:00:03 浏览:730

用rubyapi计算Sketchup中阴影面积的问题

有人能帮我吗?现在我正在Sketchup中开发一个关于构建模拟的插件。可以显示阴影,但如何使用ruby API计算其面积。阴影通常描述不完整的照明(半阴影),如曲面侧面的阴影渐变。如果要测量一个区域,可能需要完整的阴影。阴影不是SketchUp实体或绘图元素。它们正在渲染输出,不能(直接)通过API访问。请参阅此处的解决方案50,将阴影绘制为面(但是会修改用户模型),然后对这些面的面积求和。请记住,嵌套组件可以按比例缩小/变换(或向上),因此面区域看起来比实际大小更大(更小)。在这种情况下,使用第二个参数来...

日期:2021-08-19 22:00:05 浏览:798

如何在rubyonrails应用程序中集成谷歌SketchUp

嗨,我是一个RubyonRails应用程序,我想在我的应用程序中集成sketchup。如果可能,请分享这些步骤或一些文档链接。不完全可能。谷歌SketchUp(Google SketchUp)在2012已不复存在,不再受支持。(谷歌把它卖给Trimble Navigation,Inc.)SketchUp、SketchUp Make和SketchUp Pro(由@Last、谷歌和Trimble发布)的所有版本都是桌面应用程序。这些版本的EULA 1禁止在服务器环境中使用,并明确禁止将SketchUp转授给其他...

日期:2021-08-28 11:00:05 浏览:947

保存从Sketchup模型中的非内置ruby类创建的实例

我正在尝试为室内设计师和家具制造商编写一个插件来维护橱柜数据库。所有关于橱柜的信息都将存储在MySql数据库中。在将它们插入模型之前,将根据我编写的适当类在Ruby中创建它们的实例。其思想是:要在Ruby中创建文件柜的实例,在那里处理它们,并且只在Sketchup中绘制为类:Sketchup::Group。当然,我需要Ruby中的实例和Sketchup中的绘图之间的链接。我的问题是:如何/在哪里存储用Ruby创建的实例,以便在重新加载模型后可用和创建。您做过类似的事情吗??在Ruby中创建的实例已经存储在模...

日期:2021-09-17 13:00:03 浏览:553

如何在sketchup中使用ruby知道两个组件相互接触?

如果任何两个组件相互接触,那么我可以使用哪个功能来检查它??对于API没有精确的冲突检测方法。这在过去被要求……- Ruby API类别搜索:\"冲突检测\"请参阅这些找到的主题以讨论解决方法。qwertyuiop:相互接触可能您还应该指定更确切地说,哪一个意思是\"触摸\"?图像603×545 12.1 KB...

日期:2021-09-19 19:00:05 浏览:630

如何使用 selenium-webdriver (ruby) 使用相同的浏览器窗口进行自动化测试?

本文介绍了如何使用 selenium-webdriver (ruby) 使用相同的浏览器窗口进行自动化测试?的处理方法,对大家解决问题具有一定的参考价值 问题描述 我正在使用 ruby​​ 中的 selenium-webdriver 和 cucumber 为网站自动化测试用例.我需要每个功能以特定的顺序运行并使用相同的浏览...

日期:2022-06-28 02:00:31 浏览:546

使用 ruby​​ 生成格式为/etc/shadow 的 SHA512 crypt-style hashes?

本文介绍了使用 ruby​​ 生成格式为/etc/shadow 的 SHA512 crypt-style hashes?的处理方法,对大家解决问题具有一定的参考价值 问题描述 I want to generate SHA512 hashed passwords for inclusion directly into a /...

日期:2022-07-11 04:00:26 浏览:534

therubyracer 安装错误

本文介绍了therubyracer 安装错误的处理方法,对大家解决问题具有一定的参考价值 问题描述 如下所示,libv8 可以正常安装,但 ruby​​racer 不能.我使用的是 Mac 10.7.4.As you can see below, libv8 installs fine, but therubyracer ...

日期:2022-07-19 06:00:35 浏览:695

“在任何存储库中都找不到有效的 gem"(rubygame 等)

本文介绍了“在任何存储库中都找不到有效的 gem"(rubygame 等)的处理方法,对大家解决问题具有一定的参考价值 问题描述 我一直在尝试安装这个rubygame"gem,但每当我使用命令时I've been trying to install this 'rubygame' gem for some time, bu...

日期:2022-07-25 11:00:26 浏览:627

安装 pg gem 失败,“mkmf.rb 找不到 ruby​​ 的头文件"(Mac OSX 10.6.5)

本文介绍了安装 pg gem 失败,“mkmf.rb 找不到 ruby​​ 的头文件"(Mac OSX 10.6.5)的处理方法,对大家解决问题具有一定的参考价值 问题描述 我刚刚升级到 Rails 3,在 MacPorts、gem 和数据库方面有些混乱需要整理.我扔掉了所有的宝石并重新安装它们.除了 pg gem 的要求...

日期:2022-08-12 21:00:35 浏览:791