我正在构建一个包含 html 元素、类名及其计数的树。
我将如何使用正确的语法构造此代码?
$html = {
:p => [
{ 'quote' => 10 },
{ 'important' => 4 }
],
:h2 => [
{ 'title' => 33 },
{ 'subtitle' => 15 }
]
}
我对嵌套的哈希语法感到困惑。感谢您帮助我直截了当。
构建 HTML 树的一种简单方法是:
html = [
{ _tag: :p, quote: 10, important: 4 },
{ _tag: :h2, title: 33, subtitle: 15 },
]
标签名称在哪里html[0][:_tag]
,其他属性可以通过html[0][attr]
. 根元素是一个数组,因为相同类型的多个元素(多个p
aragraphs)可以存在于同一个命名空间中,并且散列只会存储最后添加的元素。
一个允许嵌套内容的更高级示例:
tree = { _tag: :html, _contents: [
{ _tag: :head, _contents: [
{ _tag: :title, _contents: "The page title" },
]},
{ _tag: :body, id: 'body-id', _contents: [
{ _tag: :a, href: 'http://google.com', id: 'google-link', _contents: "A link" },
]},
]}
定义 HTML 元素后,您没有分配另一个哈希,而是一个列表,并且从您的问题标题中我猜您想直接嵌套另一个哈希。因此,您不是从方括号开始,而是从另一个花括号开始:
$html = {
:p => { 'quote' => 10, 'important' => 4 },
:h2 => { 'title' => 33, 'subtitle' => 15 }
}
#Example
puts $html[:p]['quote']
这将打印:
10
看看 Hash 的构造函数文档,初始化哈希有不同的方法,也许你会找到更直观的一种。