0

違いは何ですか

node.property("name")

node.attributes["name"]

ドキュメントによると、一方は「名前付きプロパティ値」を返し、もう一方は「属性値」を返しますが、違いはわかりません。

何らかの役割を果たす可能性のあるものの 1 つは名前空間です。どちらのメソッドにもセッター バージョンがnode.property("name")=valueありnode.attributes["name"]=value、名前空間属性の扱い方が異なる場合があります。

4

1 に答える 1

1

ノード#プロパティ、ソースを表示:

# File lib/libxml/properties.rb, line 5
def property(name)
  warn('Node#properties is deprecated.  Use Node#[] instead.')
  self[name]
end

したがって、あなたの質問は Node#[] と Node#attributes の違いになります。答えは、Node#[] は単一の属性を返し、Node#attributes はすべての属性を含むハッシュを返すため、一度に 1 つずつ取得するよりも簡単です。もちろん、ハッシュの後に ['some_key'] を書くことで、任意のハッシュを検索できます。

puts( 
  { a: 1, b: 2}[:b] 
)

Node#[] は最初にハッシュ全体を作成しないため、1 つの属性を検索するより効率的な方法です。

于 2014-07-29T03:46:20.747 に答える