On Mon, 11 Oct 2004 13:23:27 +0900, trans. (T. Onoma) <transami / runbox.com> wrote: > On Sunday 10 October 2004 10:34 pm, Florian Gross wrote: > > > | trans. (T. Onoma) wrote: > | > How do I change the end exclusivity of a pre-existing range? > | > | In theory this is impossible because Ranges are designed to be immutable > | objects. > | > | For other objects it is possible to change them via .send(:initialize), > | but Ranges have a check for that. > | > | I think the only option would be using evil-ruby, for now. > | > | But why do you need this? > > Testing some modifications to Range. One of them is the addition of > exclude_first? Then I wanted to try out this alternate notation: > > -(0..9) # exclude end > +(0..9) # exclude first > ~(0..9) # exclude both > > Using unary operators, since they have no other meaning for ranges anyway. > > Have a few other interesting changes, as well. It took a while, but it's > beginning to look quite nice --a good bit more flexible then the current > Range class. > > T. > > P.S. You may also notice why I'm concerned with precedence, too. Fascinating!! A bit esoteric, but pretty elegant nonetheless... As for modifying the range, are you sure you want to? Maybe consider just creating a new one. I suspect that someone might be surprised if they do something like this: rng = (0..5) p -rng ... and later find that their range was modified in place. Less surprising would be for it to return a new range with the exclusive_end flag set to true. cheers, Mark