Chr*_*ris 9 ruby constructor exception
Ruby的新手,我试图找出用于将某些整数值限制为类的构造函数的习惯用法.
从我到目前为止所做的,如果我引发异常initialize(),对象仍然被创建但是将处于无效状态(例如,nil实例变量中的某些值).我不太明白我应该如何限制这些值,而不会进入看起来不必要的大步骤,比如限制访问new().
所以我的问题是,通过什么机制可以限制对象实例化的值的范围?
Dig*_*oss 13
嗯,你是完全正确的,即使initialize引起异常,物体仍然存在.然而,这将是相当困难的,除非你泄露任何人挂在参考self出initialize如下面的代码我刚写的作用:
>> 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!
Run Code Online (Sandbox Code Playgroud)