Map #
Di Ruby, tipe data yang mirip dengan “map” di bahasa pemrograman lain adalah Hash. Hash adalah struktur data yang menyimpan pasangan kunci-nilai (key-value pairs), di mana setiap kunci unik terkait dengan nilai tertentu. Hash memungkinkan penyimpanan data yang efisien dan akses cepat ke nilai berdasarkan kunci.
Mendefinisikan Hash #
Hash didefinisikan menggunakan kurung kurawal {}
dan memisahkan kunci dan nilai dengan =>
atau menggunakan sintaks Ruby 1.9+ dengan dua titik :
.
Contoh:
# Hash dengan sintaks lama
hash_old = { "name" => "Alice", "age" => 30 }
# Hash dengan sintaks Ruby 1.9+
hash_new = { name: "Alice", age: 30 }
Penjelasan:
hash_old
menggunakan sintaks kunci-nilai dengan=>
.hash_new
menggunakan sintaks yang lebih ringkas dengan:
untuk simbol kunci.
Mengakses dan Memodifikasi Nilai #
a. Mengakses Nilai:
Nilai dalam hash diakses menggunakan kunci.
Contoh:
hash = { name: "Alice", age: 30 }
puts hash[:name] # Output: Alice
Penjelasan:
- Menggunakan
hash[:name]
untuk mengakses nilai yang terkait dengan kunci:name
.
b. Menambahkan atau Memodifikasi Nilai:
Nilai baru atau yang diperbarui dapat ditambahkan dengan menetapkan nilai ke kunci.
Contoh:
hash = { name: "Alice", age: 30 }
hash[:location] = "New York" # Menambahkan kunci baru
hash[:age] = 31 # Memodifikasi nilai kunci yang sudah ada
puts hash.inspect # Output: {:name=>"Alice", :age=>31, :location=>"New York"}
Penjelasan:
hash[:location] = "New York"
menambahkan kunci:location
.hash[:age] = 31
memodifikasi nilai untuk kunci:age
.
Menghapus Kunci dan Nilai #
a. Menghapus dengan delete
:
Menghapus elemen berdasarkan kunci dan mengembalikan nilai yang dihapus.
Contoh:
hash = { name: "Alice", age: 30 }
deleted_value = hash.delete(:age)
puts deleted_value # Output: 30
puts hash.inspect # Output: {:name=>"Alice"}
Penjelasan:
hash.delete(:age)
menghapus kunci:age
dan mengembalikan nilai yang dihapus.
Iterasi Melalui Hash #
a. Menggunakan each
:
Iterasi melalui pasangan kunci-nilai dalam hash.
Contoh:
hash = { name: "Alice", age: 30 }
hash.each do |key, value|
puts "#{key}: #{value}"
end
Penjelasan:
each
mengiterasi melalui setiap pasangan kunci-nilai dan mencetaknya.
b. Menggunakan each_key
dan each_value
:
Iterasi hanya melalui kunci atau nilai.
Contoh:
hash = { name: "Alice", age: 30 }
# Iterasi melalui kunci
hash.each_key do |key|
puts key
end
# Iterasi melalui nilai
hash.each_value do |value|
puts value
end
Penjelasan:
each_key
hanya mengiterasi melalui kunci.each_value
hanya mengiterasi melalui nilai.
Metode Hash Lainnya #
a. keys
dan values
:
keys
: Mengembalikan array dari semua kunci.values
: Mengembalikan array dari semua nilai.
Contoh:
hash = { name: "Alice", age: 30 }
puts hash.keys.inspect # Output: [:name, :age]
puts hash.values.inspect # Output: ["Alice", 30]
Penjelasan:
keys
mengembalikan array dari semua kunci dalam hash.values
mengembalikan array dari semua nilai dalam hash.
b. has_key?
dan has_value?
:
has_key?
: Memeriksa apakah hash memiliki kunci tertentu.has_value?
: Memeriksa apakah hash memiliki nilai tertentu.
Contoh:
hash = { name: "Alice", age: 30 }
puts hash.has_key?(:name) # Output: true
puts hash.has_value?(30) # Output: true
Penjelasan:
has_key?(:name)
memeriksa apakah kunci:name
ada.has_value?(30)
memeriksa apakah nilai30
ada.
c. default
:
Hash dapat diinisialisasi dengan nilai default yang digunakan jika kunci tidak ditemukan.
Contoh:
hash = Hash.new("not found")
puts hash[:non_existent_key] # Output: not found
Penjelasan:
Hash.new("not found")
menginisialisasi hash dengan nilai default"not found"
.
d. merge
:
Menggabungkan dua hash, dengan kunci yang sama diperbarui dengan nilai dari hash yang di-merge.
Contoh:
hash1 = { name: "Alice", age: 30 }
hash2 = { location: "New York", age: 31 }
merged_hash = hash1.merge(hash2)
puts merged_hash.inspect # Output: {:name=>"Alice", :age=>31, :location=>"New York"}
Penjelasan:
merge
menggabungkanhash1
danhash2
, dengan nilai darihash2
menggantikan nilai darihash1
untuk kunci yang sama.
e. invert
:
Membalik kunci dan nilai dalam hash.
Contoh:
hash = { name: "Alice", age: 30 }
inverted_hash = hash.invert
puts inverted_hash.inspect # Output: {"Alice"=>:name, 30=>:age}
Penjelasan:
invert
membalik kunci dan nilai dalam hash.
Hash Multidimensi #
Hash juga dapat memiliki hash lainnya sebagai nilai, membentuk struktur data multidimensi.
Contoh:
hash = {
person1: { name: "Alice", age: 30 },
person2: { name: "Bob", age: 25 }
}
puts hash[:person1][:name] # Output: Alice
Penjelasan:
hash
memiliki dua kunci utama (:person1
dan:person2
), yang masing-masing berisi hash lainnya.
Kesimpulan #
Hash di Ruby adalah struktur data yang sangat fleksibel untuk menyimpan dan mengelola pasangan kunci-nilai. Dengan berbagai metode dan operasi yang disediakan, Anda dapat dengan mudah mengakses, memodifikasi, dan mengelola data dalam hash. Memahami berbagai operasi pada hash akan membantu Anda menulis kode Ruby yang lebih efisien dan efektif. Jika ada bagian tertentu yang perlu penjelasan lebih lanjut atau jika Anda memiliki pertanyaan lain, jangan ragu untuk bertanya!