irb
irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in
unshift’
from (irb):2
irb(main):003:0> .push(*)
=>
I am just trying out the brand new Ruby-1.8.0-preview3.
will the behavier of Array#unshift be fixed ?
Partial solution:
module ArrayZero
def new_unshift(*ary)
old_unshift(*ary) unless ary.empty?
end
def self.append_features(klass)
super
klass.instance_eval do
alias_method :old_unshift, :unshift
alias_method :unshift, :new_unshift
end
end
end
class Array
include ArrayZero
end
···
–
Simon Strandgaard
This results in an error in 1.6.7, too, though the message is different.
Did you expect 1.8 to work diffently than 1.6?
Quoteing 0bz63fz3m1qt3001@sneakemail.com, on Tue, Jun 24, 2003 at 01:39:15AM +0900:
irb
irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in
unshift’
from (irb):2
irb(main):003:0> .push(*)
=>
[ensemble] ~ $ ruby --version
ruby 1.6.7 (2002-03-01) [powerpc-darwin6.0]
[ensemble] ~ $ irb
irb(main):001:0> .unshift()
ArgumentError: wrong # of arguments(at least 1)
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) ArgumentError: wrong # of arguments(at least 1) from (irb):2:in
unshift’
from (irb):2
irb(main):003:0> ^D
Sam
I am curious, are these issues about #unshift being resolved ?
···
On Tue, 24 Jun 2003 03:40:25 +0900, nobu.nokad wrote:
Hi,
At Tue, 24 Jun 2003 01:39:15 +0900, > Simon Strandgaard wrote:
irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in
unshift’
from (irb):2
irb(main):003:0> .push(*)
=>
Also unshifting without arguments clobbers last element.
$ ruby -e ‘p [1].unshift()’
[nil]
–
Simon Strandgaard