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

15612877305 · 2019年02月12日 · 最后由 sevk 回复于 2019年02月13日 · 1218 次阅读

学习元编程第一话 实例变量存放在对象中,而方法存在类中 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"是类的实例。 类和实例的区别。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号