当我们在Ruby中的猴子补丁阵列或字符串类时,为什么不需要对象创建对象



当我们在ruby中使用数组/字符串类时,不创建对象的逻辑是什么?

例如

class String
  def custom_reverse
    self.reverse.concat("anystring")
  end
end
"MohantySan".custom_reverse
 => "naSytnahoManystring"

afaik,custom_reverse是字符串类的实例方法,如果我错了,请纠正我。

它与monkeypatching无关,而与字符串文字无关。当你做

"MohantySan".custom_reverse

就像

String.new("MohantySan").custom_reverse

但是字符串是如此常见的用法,以至于它们具有实例化对象的方便方法。

Ruby类是打开的,因此您可以将方法添加到任何类中。甚至更多的红宝石类是对象,可以创建另一个对象。当您定义这样的方法时,它在所有此类实例中都可以访问

class Foo
  def foo(name)
    puts "foo #{name}"
  end
end

最新更新