新手问题 ruby 方法存放的位置

15612877305 · February 12, 2019 · Last by sevk replied at February 13, 2019 · 1219 hits

学习元编程第一话 实例变量存放在对象中,而方法存在类中 String.instance_methods == "abc".methods =>ture String.methods == "abc".methods =>false

对象是什么? 对象就是一组实例变量外加一个指向其类的引用。对象的方法并不存在于对象本身,而是存在对象的类中,在类中,这些方法被称为类的实例方法 Class M def method @c = 1 end end 类是什么? 类就是一个对象 (Class 类的实例) 外加一组实例方法和对其超类的引用,Class 类是 module 类的子类

所以呢?

楼主的表述堪忧,想问的问题应该是:既然 String.instance_methods 结果等于'abc'.methods,为什么 String.methods 结果不等于"abc".methods。

String.instance_methods 返回的是类的实例方法,String.methods 返回的是 String 作为一个对象时拥有的方法,由于 String 是 Class 类的实例,所以返回结果至少包含 Class 类的实例方法。为啥说‘至少包含’而不是‘等于’呢,因为结果实际还有 String 的单例方法。

哈哈哈,所以他就是一个记录的东西

ruby 老铁真是热心肠,😈 😈 😈 😈 😈

String 是类, "abc"是类的实例。 类和实例的区别。

You need to Sign in before reply, if you don't have an account, please Sign up first.