Bir öğeyi dizinin başına itmenin en kolay yolu nedir?


207

Bunu yapmanın tek bir yolunu düşünemiyorum. Bir yolu var mı?

Yanıtlar:


387

unshiftYöntemi kullanmaya ne dersiniz ?

ary.unshift(obj, ...) → ary
Nesneleri, diğer öğeleri yukarı doğru hareket ettirerek kendinin önüne taşır.

Ve kullanımda:

irb>> a = [ 0, 1, 2]
=> [0, 1, 2]
irb>> a.unshift('x')
=> ["x", 0, 1, 2]
irb>> a.inspect
=> "["x", 0, 1, 2]"

Aradığım bu, ismi unuttum.
Ed S.

1
Baktım, hızlı bir taramada görmedim.
Ed S.

1
@Ed: Sayfanın üst kısmındaki yöntem listesi daha iyi biçimlendirilmiş olabilir, görsel olarak olduğu gibi taramak çok zordur. Aradığım yöntem adını bildiğim için buldum :)
mu çok kısa

118
Eğer aranızdaki sorun hatırlanmasını yaşıyorsanız shiftve unshiftşekilde diziden ve diziden hangi kaldırır ekler hangi düşürmeyin bir 'f' zihinsel isimlerinden ve yönüne olarak bir all-çok-net bir resim elde. (Ve sonra bu yöntemlerin dizinin "sonunda" çalışmadığını hatırlamanız gerekir.)
Phrogz

3
@Phrogz Yıllardır duyduğum en iyi anımsatıcı teknik! :-)
konung

47

Şunları kullanabilirsiniz insert:

a = [1,2,3]
a.insert(0,'x')
=> ['x',1,2,3]

Burada ilk argüman eklenecek dizindir ve ikincisi değerdir.


23
array = ["foo"]
array.unshift "bar"
array
=> ["bar", "foo"]

uyarmak, yıkıcı!



11

Ruby 2.5.0'dan bu yana, Array prepend yöntemle birlikte gönderilir (bu yöntem için yalnızca bir takma addır unshift).


1
Bu aynı zamanda yakut 2.4.4p296 ile çalışır, bu yüzden belki sadece yakut 2.4 ile?
Obromios

9

methodsolverRuby işlevlerini bulmak için kullanabilirsiniz .

İşte küçük bir senaryo,

require 'methodsolver'

solve { a = [1,2,3]; a.____(0) == [0,1,2,3] }

Bu baskıları çalıştırma

Found 1 methods
- Array#unshift

Yöntemleri kullanarak çözücü yükleyebilirsiniz

gem install methodsolver

Harika, bunun LOL yazmak mümkün olacağını düşünmemiştim
Marko Avlijaš

irb> require 'methodsolver'neden LoadError: cannot load such file -- method_sourcedan ... dan /var/lib/gems/1.9.1/gems/methodsolver-0.0.4/lib/methodsolver.rb:2. Ruby 1.9.3p484, irb 0.9.6, Ubuntu 14.
Camille Goudeseune

1
pryBunun yerine kullanmayı deneyinirb
akuhn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.