(--工作人员删除了问题--)
2 回答
3
这是类方法和实例方法之间区别的一个例子吗?
确切地。
但是为什么可以将其缩短为 just Hash[*order]?
Ruby 解释some_object[]为对名为[]on的方法的调用some_object。这对于哈希来说并不特殊,您可以[]在自己的任何类中实现方法并使用该语法。
有人可以解释这里发生了什么,以及是否有其他方法可以将数组中的值添加到哈希中?
Hash[*order]调用Hash#[]创建新哈希的类方法 ( )。 o.[](*order)由于您无法调用new它的相同原因不起作用:{}.new没有任何意义。您不能在类的实例上调用类方法。
您可以添加值merge:
o = Hash.new
o.merge(Hash[*order])
o = {*order}不起作用,因为{}它是 Hash 文字的语法,并且放在*order那里没有意义。
Hash(*order)是Kernel#Hash,一种只需要一个参数的方法。
于 2013-04-23T20:28:13.087 回答
1
当您编写时,Hash(*order)您实际上是在调用模块中的Hash方法Kernel,这与调用类[]中的方法不同Hash。请参阅文档以Kernel#Hash了解那里发生了什么。
于 2013-04-23T20:26:22.650 回答