From: Trans Date: 2007-12-28T03:52:57+09:00 Subject: Re: Add Array#first= and Array#last= to std lib On Dec 27, 12:54 pm, MonkeeSage wrote: > On Dec 27, 9:55 am, Sebastian Hungerecker > wrote: > > > George wrote: > > > What would you expect this to do? > > > > [].last = 1 > > > The same thing as "[][-1] = 1", I'd imagine. > > The problem I'm seeing would be this: If you allow arr.last = x, you'd also > > have to allow arr.last(n) = x if you want to be consistent, but that's not > > syntactically possible. > > > -- > > NP: Katatonia - Endtime > > Jabber: sep...@jabber.org > > ICQ: 205544826 > > Agree. It's tempting to treat #first / #last as 0 / -1, but in > actuality they are method calls and simply return a value; they don't > subscript an array. Setting #last is not semantically different than > [1,2,3].pop = 4, it's just that #last is just a bit more subtle. I don't see what you are getting at here. #pop is destructive, #last is not. What does #last return when it is called? It returns a reference to the last element. So why would #last= do anything other then set the reference of the last element? Seems obvious to me. So we can't do last(n) = x, due to syntax constraints, oh well. It would still be convenient to have the obvious n=1, no arg case. I find that my programs are usually easier to read when I can use words rather non- alphabetic symbols. T.