数组初始化和方法计数增加?秘密是什么?

pan*_*rey 1 ruby arrays methods initialization

这个问题可能很奇怪,或者我很愚蠢.

>> Array.methods.count
=> 97
>> a = Array.new.methods
=> 167
Run Code Online (Sandbox Code Playgroud)

数组初始化和分配后导致方法数量增加的原因.

knu*_*nut 5

你在计算两件事:类方法和实例方法.你可以将它与之进行比较instance_methods

p Array.methods.count          #->  97
p Array.instance_methods.count #-> 167
p Array.new.methods.count      #-> 167
Run Code Online (Sandbox Code Playgroud)

或者看看是否new是一个有效的方法:

p Array.methods.include?(:new) #true
p Array.instance_methods.include?(:new) #false
Run Code Online (Sandbox Code Playgroud)

new 仅在类上定义,而不是在实例中定义.