ฉันไม่สามารถคิดวิธีหนึ่งในการทำสิ่งนี้ มีวิธีหรือไม่?
ฉันไม่สามารถคิดวิธีหนึ่งในการทำสิ่งนี้ มีวิธีหรือไม่?
คำตอบ:
แล้วการใช้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]"
shift
และunshift
ตามที่เพิ่มไปยังอาร์เรย์และที่ลบออกจากอาร์เรย์ให้วาง 'f' จากชื่อทางจิตใจและคุณจะได้ภาพที่ชัดเจนเกินไปเกี่ยวกับทิศทาง (และคุณต้องจำไว้ว่าวิธีการเหล่านี้ใช้ไม่ได้กับ "จุดจบ" ของอาเรย์;)
คุณสามารถใช้insert
:
a = [1,2,3]
a.insert(0,'x')
=> ['x',1,2,3]
โดยที่อาร์กิวเมนต์แรกคือดัชนีที่แทรกที่และที่สองคือค่า
array = ["foo"]
array.unshift "bar"
array
=> ["bar", "foo"]
ได้รับคำเตือนมันเป็นการทำลายล้าง!
คุณยังสามารถใช้การต่อข้อมูลอาเรย์ได้ :
a = [2, 3]
[1] + a
=> [1, 2, 3]
สิ่งนี้จะสร้างอาร์เรย์ใหม่และไม่แก้ไขต้นฉบับ
ตั้งแต่ Ruby 2.5.0, Array จัดส่งด้วยprepend
เมธอด (ซึ่งเป็นเพียงนามแฝงสำหรับunshift
เมธอด)
คุณสามารถใช้methodsolver
เพื่อค้นหาฟังก์ชัน Ruby
นี่เป็นบทเล็ก ๆ
require 'methodsolver'
solve { a = [1,2,3]; a.____(0) == [0,1,2,3] }
เรียกใช้งานพิมพ์นี้
Found 1 methods
- Array#unshift
คุณสามารถติดตั้งวิธีการเงินโดยใช้
gem install methodsolver
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.
pry
แทนirb