วิธีที่ง่ายที่สุดในการผลักองค์ประกอบไปยังจุดเริ่มต้นของอาร์เรย์คืออะไร?


คำตอบ:


387

แล้วการใช้unshiftวิธีนี้ล่ะ?

ary.unshift(obj, ...) → ary
เตรียมวัตถุไว้ด้านหน้าตัวเองขยับองค์ประกอบอื่น ๆ ขึ้นไป

และในการใช้งาน:

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

นั่นคือสิ่งที่ฉันกำลังมองหาลืมชื่อ
Ed S.

1
ฉันมองแค่ไม่เห็นพวกเขาในการสแกนอย่างรวดเร็ว
Ed S.

1
@Ed: รายการเมธอดที่ด้านบนของหน้าอาจมีการจัดรูปแบบที่ดีขึ้นมันยากมากที่จะมองเห็นการสแกนตามที่เป็นอยู่ ฉันพบเพราะฉันรู้ชื่อวิธีที่ฉันกำลังมองหา :)
mu สั้นเกินไป

118
หากคุณมีปัญหาในการจดจำระหว่างshiftและunshiftตามที่เพิ่มไปยังอาร์เรย์และที่ลบออกจากอาร์เรย์ให้วาง 'f' จากชื่อทางจิตใจและคุณจะได้ภาพที่ชัดเจนเกินไปเกี่ยวกับทิศทาง (และคุณต้องจำไว้ว่าวิธีการเหล่านี้ใช้ไม่ได้กับ "จุดจบ" ของอาเรย์;)
Phrogz

3
@Phrogz เทคนิคการจำที่ดีที่สุดที่ฉันเคยได้ยินในปี! :-)
konung

47

คุณสามารถใช้insert:

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

โดยที่อาร์กิวเมนต์แรกคือดัชนีที่แทรกที่และที่สองคือค่า




11

ตั้งแต่ Ruby 2.5.0, Array จัดส่งด้วยprepend เมธอด (ซึ่งเป็นเพียงนามแฝงสำหรับunshiftเมธอด)


1
วิธีนี้ใช้ได้กับทับทิม 2.4.4p296 ดังนั้นอาจเป็นทับทิม 2.4 หรือไม่
Obromios

9

คุณสามารถใช้methodsolverเพื่อค้นหาฟังก์ชัน Ruby

นี่เป็นบทเล็ก ๆ

require 'methodsolver'

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

เรียกใช้งานพิมพ์นี้

Found 1 methods
- Array#unshift

คุณสามารถติดตั้งวิธีการเงินโดยใช้

gem install methodsolver

เจ๋งไม่คิดว่ามันจะเป็นไปได้ที่จะเขียน LOL
Marko Avlijaš

irb> require 'methodsolver'ทำให้เกิดLoadError: cannot load such file -- method_sourceจาก ... /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
ลองใช้pryแทนirb
akuhn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.