当我开始上课时,自我传递

时间:2012-03-31 06:14:10

标签: ruby

当我在A.new内拨打B时,有没有办法自动获取某些对象而不指定它?我希望自动将selfB传递到A,而不指定它。

class A
  initialize object=target-self
  end
end


class B
  A.new
end

然后,除非我指定另一个类,否则每次我都希望self默认传递时,我不必输入此内容。

 A.new self

1 个答案:

答案 0 :(得分:3)

这很简单。你所要做的就是写:

class A
  def initialize(object = self)
    # work with object
  end
end

Ruby中始终存在self的值。在您提供的示例中,它将评估为B类。要使它成为类的实例,只需在初始化期间调用该方法:

class B
  def initialize
    A.new  # self is a B instance here
  end
end