Array adalah koleksi yang terurut; hash adalah koleksi pasangan kunci-nilai (seperti dictionary/map). Keduanya adalah dua struktur data utama Ruby, dengan kumpulan metode yang kaya dan ekspresif (sebagian besar dari modul Enumerable) yang membuat manipulasi data menjadi elegan.
Array — koleksi terurut
fruits = ["apple", "banana", "cherry"]
fruits[0] # "apple" — index access
fruits[-1] # "cherry" — negative indexes from the end
fruits << "date" # append (or .push)
fruits.length # size
fruits.include?("apple") # membership
# Ruby's elegant array methods (from Enumerable)
fruits.map { |f| f.upcase } # transform each
fruits.select { |f| f.length > 5 } # filter
fruits.each { |f| puts f } # iterate
[3, 1, 2].sort # [1, 2, 3]
[1, 2, 3].sum # 6
Array bersifat dinamis, terurut, terindeks (dengan dukungan indeks negatif), dan memiliki kumpulan metode yang kaya (map, select, reduce, dll.) untuk pemrosesan data yang elegan.
Hash — koleksi pasangan kunci-nilai
# symbol keys (the idiom) with modern syntax
user = { name: "Ann", age: 30, role: :admin }
user[:name] # "Ann" — access by key
user[:email] = "[email protected]" # add/set
user.key?(:name) # check key existence
user.fetch(:name) # access with an error if missing (or a default)
# iterate key-value pairs
user.each { |key, value| puts "#{key}: #{value}" }
user.keys; user.values
user.map { |k, v| "#{k}=#{v}" }
Hash memetakan kunci ke nilai. Sintaks idiomatik menggunakan kunci symbol ({ name: "Ann" }), dan hash memiliki metode kaya untuk akses, iterasi, dan transformasi. fetch menyediakan akses yang aman (dengan default atau error untuk kunci yang hilang).
Pola-pola yang berguna
# default values
counts = Hash.new(0)
counts[:x] += 1 # works even though :x wasn't set (default 0)
# nested structures (common for JSON-like data)
data = { users: [{ name: "Ann" }, { name: "Bob" }] }
data[:users].first[:name] # "Ann"
Mengapa ini penting
Array dan hash adalah struktur data fundamental Ruby — digunakan terus-menerus untuk menyimpan dan memproses koleksi data — jadi menguasainya adalah pengetahuan esensial sehari-hari. Array (koleksi terurut dan terindeks dengan dukungan indeks negatif) dan hash (peta kunci-nilai) mencakup sebagian besar kebutuhan penanganan data (daftar, record, konfigurasi, data mirip JSON).
Apa yang membuat keduanya sangat powerful di Ruby adalah library metode yang kaya dan ekspresif (sebagian besar dari modul Enumerable) — map, select, reduce, each, dan puluhan lainnya — yang memungkinkan Anda untuk mentransformasi, memfilter, dan memproses data dengan elegan menggunakan kode yang ringkas dan mudah dibaca daripada loop yang bertele-tele, mencerminkan gaya ekspresif Ruby.
Mengetahui konvensi idiomatik — terutama kunci symbol untuk hash ({ name: "Ann" }) dan pola berguna seperti Hash.new(0) untuk nilai default, fetch untuk akses yang aman, dan struktur nested untuk data kompleks — penting untuk menulis Ruby yang bersih dan idiomatik.
Karena array dan hash muncul di hampir setiap program Ruby, dan karena metode kayanya adalah pusat dari gaya pemrosesan data Ruby yang elegan (dan untuk bekerja dengan Rails, JSON, dan API), kelancaran dengannya — membuat, mengakses, melakukan iterasi, dan mentransformasi array dan hash dengan metode ekspresif mereka — adalah pengetahuan fundamental dan essential yang mendasari pengembangan Ruby yang efektif dan idiomatik.
