0

和有什么区别

node.property("name")

node.attributes["name"]

根据文档,一个返回“命名属性值”,另一个返回“属性值”,但我没有看到任何区别。

可能发挥某种作用的一件事是名称空间。这两种方法都有自己的 setter 版本node.property("name")=valuenode.attributes["name"]=value并且它们处理命名空间属性的方式可能有所不同。

4

1 回答 1

1

Node#property,查看源代码:

# 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 返回包含所有属性的哈希,这比一次检索一个属性更容易。当然,您可以通过在散列后写入 ['some_key'] 来查找任何散列,例如:

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

Node#[] 是查找一个属性的更有效方法,因为它不会首先创建整个哈希。

于 2014-07-29T03:46:20.747 回答