1

html要素、クラス名、およびそれらの数のツリーを構築しています。

このコードを適切な構文でどのように構成しますか?

$html = {

    :p => [
        { 'quote' => 10 },
        { 'important' => 4 }
    ],
    :h2 =>  [
        { 'title' => 33 },
        { 'subtitle' => 15 }
    ]

}

ネストされたハッシュ構文に混乱しています。私をまっすぐにする助けをありがとう。

4

2 に答える 2

4

HTMLツリーを構造化する簡単な方法は次のとおりです。

html = [
  { _tag: :p, quote: 10, important: 4 },
  { _tag: :h2, title: 33, subtitle: 15 },
]

html[0][:_tag]タグ名はどこにあり、他の属性にはからアクセスできますhtml[0][attr]。同じタイプの複数の要素(複数のparagraphs)が同じ名前空間に存在する可能性があり、ハッシュには最後に追加された要素のみが格納されるため、ルート要素は配列です。

ネストされたコンテンツを許可するより高度な例:

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" },
  ]},
]}
于 2012-07-20T00:44:22.983 に答える
3

HTML要素を定義した後、別のハッシュを割り当てるのではなく、リストと質問のタイトルから、別のハッシュを直接ネストしたいと思います。したがって、角括弧ではなく、別の中括弧で開始します。

$html = {
    :p => { 'quote' => 10, 'important' => 4 },
    :h2 =>  { 'title' => 33, 'subtitle' => 15 }
}

#Example
puts $html[:p]['quote']

どちらが印刷されますか:

10

ハッシュのコンストラクタードキュメントを見てください。ハッシュを初期化する方法はいくつかありますが、もっと直感的な方法を見つけるかもしれません。

于 2012-07-20T00:38:59.777 に答える