Menu
CoddyTech

Hash.new dengan Nilai Bawaan

Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 33 dari 56.

Secara default, mencari kunci yang tidak ada dalam hash akan menghasilkan nil:

scores = {}
puts scores["Alice"]   # nil

Hash.new(default) mengubah hal itu. Setiap key yang tidak ada mengembalikan nilai yang kamu berikan:

scores = Hash.new(0)
puts scores["Alice"]   # 0

Ini cara paling rapi untuk menulis penghitung. Kamu tidak perlu memeriksa if scores[name].nil? sebelum menambah nilainya:

counts = Hash.new(0)
["a", "b", "a", "c", "a"].each do |letter|
  counts[letter] += 1
end
puts counts.inspect   # {"a"=>3, "b"=>1, "c"=>1}

Penting: Hash.new(0) menetapkan nilai default ke 0, tetapi tidak menyimpan kunci saat kamu membacanya. Hash tetap kosong sampai kamu menetapkan nilai. Jadi, setelah kamu menulis counts[letter] += 1, kunci ditambahkan dengan nilai baru.

challenge icon

Tantangan

Mudah

Baca list entri category:amount yang dipisahkan koma (misalnya, food:12,gas:30,food:8,books:25,gas:15). Buat hash berisi total per kategori menggunakan Hash.new(0), lalu cetak hanya kategori yang totalnya minimal 20, satu kategori per baris, diurutkan berdasarkan total dari terbesar ke terkecil:

<category>: <total>

Untuk input contoh di atas, output-nya adalah:

gas: 45
books: 25
food: 20

Jika tidak ada kategori yang mencapai 20, jangan cetak apa pun.

Coba sendiri

entries = gets.chomp.split(",")

# TODO: totals = Hash.new(0); jumlahkan amount per kategori;
#       lalu tampilkan kategori dengan total >= 20, diurutkan berdasarkan total dari terbesar ke terkecil
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Ruby online