当我们在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