Ruby 新的能不能归零?

Ruby 新的能不能归零?,ruby,Ruby,我正在一个用ruby编写的新代码库中工作。我以前从未开发过ruby,所以我有一个非常普遍的问题。我觉得代码有一种奇怪的模式。当它创建一个类的新实例时,它会立即检查以确保它不是nil @client = Client.new() raise("Client not initialized.") if (@client == nil) 一般来说,新产品能否返回零?这是常见的ruby模式吗?可以吗?可以 可以用可能返回nil的内容覆盖Class#new(调用Class#allocate,然后初始化)

我正在一个用ruby编写的新代码库中工作。我以前从未开发过ruby,所以我有一个非常普遍的问题。我觉得代码有一种奇怪的模式。当它创建一个类的新实例时,它会立即检查以确保它不是nil

@client = Client.new()
raise("Client not initialized.") if (@client == nil)

一般来说,新产品能否返回零?这是常见的ruby模式吗?

可以吗?可以

可以用可能返回
nil
的内容覆盖
Class#new
(调用
Class#allocate
,然后
初始化
)的默认实现。但是,

会吗?可能不会


new
的默认实现将不会返回
nil
,重写
new
是非常罕见的,而且可能不是很好的形式(虽然这不一定是坏的做法,但通常有更好的方法)。

这只是一种方法,所以肯定可以。这很普遍吗?不,一点也不。这种模式在Swift中非常常见,例如许多Cocoa API使用可失败的Inializer。在Ruby中,这是可能的,但很少使用——如果创建实例的先决条件失败,通常会引发异常。