在执行外部类'之后创建内部类对象;Ruby中的构造函数是什么?
我想为类中的内部类创建对象。所有内部类方法都使用一个公共变量,在创建外部类时需要初始化该变量在执行外部类'之后创建内部类对象;Ruby中的构造函数是什么?,ruby,class,constructor,inner-classes,Ruby,Class,Constructor,Inner Classes,我想为类中的内部类创建对象。所有内部类方法都使用一个公共变量,在创建外部类时需要初始化该变量 class A @x = nil @y = nil def initialize(x, y) @x = x @y = y end class B def func_b puts "x- #{@x} and y- #{@y} in class B" end end
class A
@x = nil
@y = nil
def initialize(x, y)
@x = x
@y = y
end
class B
def func_b
puts "x- #{@x} and y- #{@y} in class B"
end
end
class C
def func_c
puts "x- #{@x} and y- #{@y} in class C"
end
end
end
我能够为类B
和C
创建对象
#1
b = A::B.new
#2
a = A
c = a::C.new
但是我想在为B
或C
创建对象之前初始化A
差不多
a = A.new(4,5)
b = a::C.new
但这似乎不起作用。我应该如何做上述
class A
def initialize(x, y)
@x = x
@y = y
end
end
class B < A
def func_b
puts "x- #{@x} and y- #{@y} in class B"
end
end
class C < A
def func_c
puts "x- #{@x} and y- #{@y} in class C"
end
end
c = C.new(4,5)
c.func_c
这似乎很好:) Ruby中的嵌套模块和类主要是组织上的选择。比较一下这个
class A; end
class B; end
还有这个
class A
class B; end
end
这两者之间只有两个区别
A::B
才能访问B
B
中访问的常量将在A
中查找,然后再在顶级中查找class B < A; end
但这只是组织上的差异
另一方面,这个
class A
@x = nil
@y = nil
end
不做你认为它能做的事。这是在A
本身上设置实例变量,即将A
视为A.singleton\u类的实例。如果您想要A
实例的默认值,则必须在初始化中设置这些值:
class A
def initialize
@x = nil
@y = nil
end
end
这个“解决方案”与你的要求无关。。。您应该更多地阅读OOP,因为您似乎不知道表达这些概念的正确语言。
class A
@x = nil
@y = nil
end
class A
def initialize
@x = nil
@y = nil
end
end