实例化和初始化方法

01

的02

实例化和初始化方法

在轨道上学习红宝石:与irb一起玩

当您在Ruby中定义一个类时,Ruby将为类名称常量分配一个新的类对象。例如,如果你要说班级人员;结束,这大致相当于人员=类。新纳米科普。该类对象的类型为,并包含许多方法,可用于制作这些实例的副本实例。

02

43 of 02 44

制作实例

要创建一个类的新实例,请调用该类'snew方法。默认情况下,这将为类分配所需的内存并返回对新对象的引用。所以,如果你要创建一个54人55班的新实例,你会打电话给56人人。新。

起初这似乎有点落后,Ruby中没有new关键字或任何特殊语法。新对象是通过一种正常的方法创建的,所有这些方法都是说和做的,做相对简单的事情。

初始化实例

空白对象不是很令人兴奋。为了开始使用对象,必须首先初始化(假设它有任何需要初始化的实例变量)。这是通过初始化方法完成的。Ruby会通过你传递给70的任何论据SomeClass.new到在新对象上初始化。然后,您可以使用正常的变量分配和方法来初始化对象的状态。在此示例中,将显示一个类,其初始化方法将采用名称和年龄参数,并将其分配给实例变量。

班级人员定义初始化(姓名,年龄)@name,@age=name,年龄结束bob=人。新('Bob',34)

您也可以利用这个机会获取您可能需要的任何资源。打开网络插座,打开文件,读取您需要的任何数据等。**需要注意的是人们通常不会'预计初始化方法会失败。请务必**记录任何可能失败的初始化方法。

脱色对象

一般来说,你不破坏红宝石中的对象。如果您'来自C++或其他没有垃圾收集器的语言,这似乎很奇怪。但是在Ruby(以及大多数其他垃圾收集的语言)中,您不需要'不破坏对象,只需停止引用它。在下一个垃圾收集循环中,任何没有提及它的对象都将自动销毁。有一些带有圆形引用的错误,但一般来说,这工作完美无误,你不需要'甚至不需要"destructor。"

如果您'想知道资源,请不要担心。当保存资源的对象被销毁时,资源将被释放。打开的文件和网络连接将被关闭,内存取消分配等。只有在C扩展名中分配任何资源时,您真的需要担心取消分配资源。虽然不能保证垃圾收集器何时运行。为了以及时的方式取消分配资源,请尝试手动释放资源。

制作对象的副本

红宝石是通过参考。如果将对对象的引用传递给方法,并且该方法调用修改该对象状态的方法,则可能发生意外后果。此外,方法可以稍后保存对对象的引用以进行修改,从而导致错误的延迟效果。为了避免这种情况,Ruby提供了一些复制对象的方法。

要复制任何对象,只需调用一些_对象方法。一个新的对象将被分配,所有的object's实例变量将被复制。然而,复制实例变量是这应该避免的:这就是's称为"浅拷贝。"如果要将文件保存在实例变量中,两个重复的对象现在将指的是相同的文件。

在使用dup方法之前,请注意副本是浅副本。有关更多信息,请参阅用Ruby制作深度副本的文章。