Introduction to Ruby Hashes

Introduction to Hashes

Hi, and welcome! Today, we'll explore Hashes, a data structure that organizes data as key-value pairs, much like a treasure box with unique labels for each compartment.

Imagine dozens of toys in a box. If each toy had a unique label (the key), you could directly select a toy (the value) using the label. No rummaging required — that's the power of Hashes! Today, we'll understand Hashes and learn how to implement them in Ruby.

Understanding Hashes

Hashes are special types of collections that utilize unique keys instead of indexes. When you know the key (toy's label), you can directly pick up the value (toy). That's how a Hash works!

Consider an oversized library of books. With Hashes (which act like the library catalog), you can quickly locate any book using a unique number (key)!

Hashes in Ruby

Ruby implements key-value pairs through Hashes. They hold data in key-value pairs, enclosed within {} (curly braces).

Let's create a hash, functioning as a catalog for a library:

Ruby
# Creating a catalog for the library using hashes
library_catalog = {'book1' => 'A Tale of Two Cities', 
                   'book2' => 'To Kill a Mockingbird', 
                   'book3' => '1984'}

In this hash, 'book1', 'book2', and 'book3' are keys, while the book titles serve as their respective values.

Hash Operations: Accessing, Updating, and Removing Elements

Hashes allow you to access, update, or remove elements:

  1. Accessing Elements: You can retrieve a book's title using its key straightforwardly: library_catalog['book1'] would return 'A Tale of Two Cities'. However, if you try to access a key that isn't present in the hash, nil would be returned instead of an error.

    Alternatively, Ruby Hashes provide the fetch method. It raises an error if the key isn't present, but you can also provide a default value.

    Ruby
    # Using fetch to access a book's title with a default value
    book1 = library_catalog.fetch('book1', 'Not Found')
    puts book1  # Output: "A Tale of Two Cities"
    
    # Using fetch to access a nonexistent key with a default value
    nonexistent_book = library_catalog.fetch('book100', 'Not Found')
    puts nonexistent_book  # Output: "Not Found"

    In the example above, using fetch('book1') retrieves the value for the key 'book1', and fetch('book100', 'Not Found') provides a safe alternative to a missing key.

  2. Adding or Updating Elements: Whether you're adding a new book to the catalog or updating an existing book's title, you'll use the assignment operator (=). This syntax in Ruby Hashes allows for both updating existing key-value pairs and establishing new ones.

    If the specified key exists in the hash, the assigned value replaces the existing one. For updating a title: library_catalog['book1'] = 'The Tell-Tale Heart'.

    If the key doesn't exist in the hash yet, the operation creates a new key-value pair: library_catalog['book4'] = 'Pride and Prejudice'.

  3. Removing Elements: If 'book1' no longer exists, you can remove it using library_catalog.delete('book1').

Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal