我正在使用ruby编写的新代码库。我之前从未开发过红宝石,所以我有一个非常普遍的问题。代码有一个我觉得很奇怪的模式。当它创建一个类的新实例时,它会立即检查以确保它不是零。
@client = Client.new()
raise("Client not initialized.") if (@client == nil)
一般来说新回报可以吗?这是一种常见的红宝石模式吗?
答案 0 :(得分:5)
可以吗?是的。
可以使用可能返回Class#new
的内容覆盖Class#allocate
(调用initialize
然后调用nil
)的默认实现。然而,
会吗?可能不会。
new
的默认实现将不返回nil
,并且覆盖new
非常罕见,可能不是很好的形式(尽管它不是通常不好的做法,通常有更好的方法。)