Ruby 新手,我想弄清楚使用什么习惯用法来将某些整数值限制为类的构造函数。
根据我目前所做的,如果我在 initialize()
中引发异常,该对象仍会创建,但将处于无效状态(例如,某些 nil
实例变量中的值)。我不太明白我应该如何限制这些值而不进入看起来不必要的大步骤,例如限制对 new()
的访问。
所以我的问题是,我可以通过什么机制来限制实例化对象的值范围?
最佳答案
嗯,你是完全正确的,即使 initialize
引发异常,对象仍然存在。然而,任何人都很难坚持引用,除非你从 initialize
中泄漏 self
就像我刚写的下面的代码一样:
>> class X
>> def initialize
>> $me = self
>> raise
>> end
>> def stillHere!
>> puts "It lives!"
>> end
>> end
=> nil
>> t = X.new
RuntimeError:
from (irb):14:in `initialize'
from (irb):20:in `new'
from (irb):20
>> t
=> nil
>> $me
=> #<X:0xb7ab0e70>
>> $me.stillHere!
It lives!
关于Ruby 构造函数和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485114/