为什么有些方法在私有方法列表中大写?

时间:2014-02-21 10:25:13

标签: ruby

当我运行1.private_methods时,我得到下一个输出:

1.private_methods
=> [
:initialize_copy, 
:default_src_encoding, 
....
:format, 
:Integer, 
:Float, 
:String, 
:Array, 
:warn, 
...
:Rational, 
:Complex, 
:gem, 
...
]

我在这里看到一些名称与IntegerFloatArrayString等类名相匹配的方法。这怎么可能?它们实际上是什么?这些方法都是吗?

2 个答案:

答案 0 :(得分:2)

是的,这些是常规方法。 Ruby允许大写的方法名称。如果没有,那就像

Array(1..3)
# => [1, 2, 3]

无法使用。

答案 1 :(得分:2)

就像以小写字母开头的方法与局部变量不一致一样,以大写字母开头的方法与常量不一致(类,模块是特殊情况)。当你只是简单地写IntegerFloat等时,你没有点击这些方法的原因是因为有一条规则将它们解释为局部变量或常量而不是方法什么时候模糊不清当你想使用它们作为一种方法时,总会有一种解决歧义的方法,例如(i)为参数附加括号,(ii)在它们之前写一个接收者和一段时间。