在Ruby中,如何定位到执行了响应方法调用的具体类?

更新于
2026-10-03 21:10:05
0阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计248个文字,预计阅读时间需要1分钟。

在Ruby中,如果我的类层次结构看起来像这样的结构(非符号):

A+B+C(宾语语序)+ 有一个在C类中定义的方法foo,

那么,是否存在一些内在的权限允许我确信C是定义了响应A.new.foo的方法的类?

是的,如果A是C的祖先类,并且C类中定义了方法foo,那么C的实例将继承这个方法。这意味着当你创建A的新实例并调用foo方法时,这个调用将被C类的方法响应。

例如:

rubyclass Aend

class B

class C

a=A.newa.new.foo # 输出: C's foo method

在这个例子中,虽然a是A的实例,但因为它也继承了C,所以调用new.foo会调用C中的foo方法。

所以,在 Ruby中,如果我的类层次结构看起来像(非常符号)

A< B< C<宾语 有一个在C类中定义的方法“foo”,是否有一些内省允许我确定C是定义响应A.new.foo的方法的类?

是的……做A.new.method(:foo).owner.它会给你C班.阅读 #owner.

本文共计248个文字,预计阅读时间需要1分钟。

在Ruby中,如果我的类层次结构看起来像这样的结构(非符号):

A+B+C(宾语语序)+ 有一个在C类中定义的方法foo,

那么,是否存在一些内在的权限允许我确信C是定义了响应A.new.foo的方法的类?

是的,如果A是C的祖先类,并且C类中定义了方法foo,那么C的实例将继承这个方法。这意味着当你创建A的新实例并调用foo方法时,这个调用将被C类的方法响应。

例如:

rubyclass Aend

class B

class C

a=A.newa.new.foo # 输出: C's foo method

在这个例子中,虽然a是A的实例,但因为它也继承了C,所以调用new.foo会调用C中的foo方法。

所以,在 Ruby中,如果我的类层次结构看起来像(非常符号)

A< B< C<宾语 有一个在C类中定义的方法“foo”,是否有一些内省允许我确定C是定义响应A.new.foo的方法的类?

是的……做A.new.method(:foo).owner.它会给你C班.阅读 #owner.