From: John Carter Date: 2005-05-09T12:36:39+09:00 Subject: Re: No Thing Here vs Uninitialized and RCR 303 On Mon, 9 May 2005, David A. Black wrote: > Or do you mean instance variables and global variables, which evaluate > to nil by default prior to being initialized? Well, that one is clearly a case of nil === "uninitialized" > Do you mean there's a convention of initializing variables to nil, prior > to (say) their use as iterator variables or counters? If so, that's > very different from an uninitialized variable. Let me bounce that question back to you... When _you_ personally do that, what do you mean? Do you mean "This is ruby's, umm, curious way of declaring local variables, namely by initializing them to something. I am initializing this local variable to nil. By this I, David A. Black mean (tick one) a) This local variable is uninitialized and I wish ruby to throw an error if I invoke a method on it before initializing it to something meaningful. b) This local variable holds "no thing", and doing nothing and returning nothing would be an appropriate action on invoking a method on it. Myself, John Carter, would like on some occasions to tick one and on other occasions to tick the other. Currently, whatever I mean, the effect is a). I can, and am currently writing a Nothing class that allows me to assign NOTHING, the sole instance of my Nothing class to a local variable in the case you describe. But I'm running up against the gotcha that deep in "ruby.h" is a macro RTEST. Rubies interpretor, eval.c uses RTEST in many places. In "if", in "unless", in "while", in.... RTEST is 0 (false) in the C speaking world of eval if an ruby expression evaluates to false or nil. For my Nothing class to really work well, I would need RTEST to evaluate to 0 for nil,false and NOTHING. All Work arounds and suggestions welcome... John Carter Phone : (64)(3) 358 6639 Tait Electronics Fax : (64)(3) 359 4632 PO Box 1645 Christchurch Email : john.carter@tait.co.nz New Zealand Surprisingly enough, this email does not originate from a beetle.