在类方法中创建不同类的对象

时间:2016-03-26 17:16:04

标签: ruby class methods

我试图调用一个方法来创建另一个类的对象。当我这样做时,我得到了对象已被创建的反馈,但我似乎无法对该对象做任何事情(例如从该对象类调用一个方法)。这是一个例子:

class A
    def initialize

    end

    def generate
        var = B.new
    end
end

class B
    def initialize

    end

    def declare
        puts "I exist!"
    end
end

test = A.new
test.generate
var.declare

这将返回一个"未定义的局部变量或方法' var'"错误。我错了吗?我能想到的最好的是我只在实例中创建这个对象,但即使我在实例中尝试使用它,它也会返回undefined。有没有其他方法可以做到这一点我没想到,或者我做错了吗?谢谢!

1 个答案:

答案 0 :(得分:4)

var只是"可见"在generate方法中。将它移出课堂。

class A
    def generate
        B.new
    end
end

class B
    def declare
        puts "I exist!"
    end
end

test = A.new
var  = test.generate  # var is an instance of B
var.declare # => I exist!

方法链也是可能的,避免变量。

A.new.generate.declare # => I exist!
相关问题