(--工作人员删除了问题--)
问问题
455 次
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 回答