Ruby 请教个 ruby 问题?

zlfera · 2013年07月23日 · 最后由 blackanger 回复于 2013年07月26日 · 2484 次阅读

我自己为一个对象定义了一个方法,我想要另一个对象也可以访问这个方法怎么弄呀?

能不能不要用 GIF 头像?

没懂 lz 啥意思?

@goinaction 比如我为 a 对象定义了 s 方法,我现在想要 b 对象能够访问这个方法怎么弄?

标题明确,内容清晰,才可能获得高质量的回答。请搜索“提问的艺术”。

#3 楼 @zlfera 继承它。PS:小心你这只老鹰被射下来!赶紧换呗~

@ruby_sky我说的是一个对象的单例方法怎么被另一个对象调用

#6 楼 @zlfera 还是给代码比较直接明了

写个 module 然后分别混进两个对象里面

... 这样... ?

O = Object.new
def O.foo
  'foo'
end

K = Object.new
def K.foo
  O.foo
end

hook 然后 send

一个对象,可以理解为类和实例对象,本身类也算是 Class 的一个实例对象。 单例方法,如果是类的单例方法,那就是类方法,你想在另一个类里调用这个类的类方法,可以这样。

class A
  def self.test
    puts "hello"
  end
end

class B
  def self.test
    A.test
  end
end

如果是实例对象。

module A
  def test
     "hello"
  end
end

class B;end
class C;end

b = B.new
c = C.new
b.extend A
c.extend A

b.test
c.test

实例对象的单例方法,你无法在另一个对象中直接调用,因为在另一个对象中找不到那个方法,只会把它当实例变量去处理。

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