我看到这样的事情this library:,从他们的父母继承的嵌套类
class A
# ...
class B < A
# ...
end
end
这是不奇怪?我得到了可以在其他类中声明类的概念,但是这些嵌套类继承自父类。这是不是像一个无限循环?
也许它看起来比较简单,但这张图片让我犹豫不决。我在这里错过了一些隐藏的好处,还是我不知道的特殊Ruby成语?
我看到这样的事情this library:,从他们的父母继承的嵌套类
class A
# ...
class B < A
# ...
end
end
这是不奇怪?我得到了可以在其他类中声明类的概念,但是这些嵌套类继承自父类。这是不是像一个无限循环?
也许它看起来比较简单,但这张图片让我犹豫不决。我在这里错过了一些隐藏的好处,还是我不知道的特殊Ruby成语?
命名空间和子类是两个不同的东西。他们没有任何关系。
这样做:
class A
class B
end
end
你在A
命名空间定义B
,因此A::B
(但B
不是A
一个子类,实际上它是Object
子类)。
这样做:
class A
end
class B < A
end
定义B
为A
一个子类(但B
是不是在A
命名空间;事实上,它是主要的环境::
(或Object::
)的命名空间。
在您的例子:
class A
class B < A
end
end
两个HAPP同时存在,但它们彼此独立,并且没有矛盾。
除了@ sawa的回答:这可以作为重构过程中的中间步骤。
说,我遇到了一些大胖类,我清楚地看到几个子类可以在这里提取。但我还不知道他们的名字。而当我这样做时,我可能会在这个过程中多次重命名它们。这使得为每个子类创建一个文件成为不必要的障碍。所以我开始在那里声明子类,并在同一个文件中移动代码。当我有点满意时,然后我会将子类移到他们的专用文件。或者,也许我不会,如果他们非常小(我觉得他们不值得一个单独的文件)。