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

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

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

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

共收到 5 条回复

所以呢?

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

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

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

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

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

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