Menu
CoddyTech

Truy cập phần tử trong từ điển

Thuộc phần Kiến thức nền tảng trong hành trình Ruby của Coddy. Bài học 74 trên 88.

Bây giờ bạn đã biết cách tạo hash, bạn cần lấy các giá trị được lưu bên trong chúng. Khác với mảng, nơi bạn dùng chỉ số dạng số, hash dùng khóa để truy cập các giá trị.

Đặt khóa bên trong dấu ngoặc vuông để lấy giá trị tương ứng:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}

puts person["name"]  # In ra: Alice
puts person["age"]   # In ra: 25

Khóa phải khớp chính xác với khóa bạn đã dùng khi tạo hash. Nếu bạn thử truy cập một khóa không tồn tại, Ruby trả về nil:

person = {"name" => "Alice", "age" => 25}

puts person["country"]  # Đầu ra: (không có gì, nil)

Bạn cũng có thể dùng phương thức fetch, cho phép bạn cung cấp giá trị mặc định khi thiếu khóa:

person = {"name" => "Alice"}

puts person.fetch("name", "Unknown")     # Đầu ra: Alice
puts person.fetch("country", "Unknown")  # Đầu ra: Unknown

Cách này hữu ích khi bạn muốn xử lý các khóa bị thiếu một cách nhẹ nhàng thay vì nhận nil.

challenge icon

Thử thách

Dễ

Đọc bốn dòng đầu vào:

  1. Tên sản phẩm (chuỗi)
  2. Giá (số thực)
  3. Số lượng hàng trong kho (số nguyên)
  4. Khóa cần tra cứu (chuỗi)

Tạo một hash có tên product với các cặp khóa-giá trị sau:

  • "name" ánh xạ đến tên sản phẩm
  • "price" ánh xạ đến giá (dưới dạng số thực)
  • "stock" ánh xạ đến số lượng (dưới dạng số nguyên)

Sau đó, dùng phương thức fetch để lấy giá trị của khóa được cung cấp trong dòng đầu vào thứ tư. Nếu khóa không tồn tại, dùng "<code>Not found" làm giá trị mặc định. In ra kết quả.

Ví dụ, nếu đầu vào là Laptop, 999.99, 15 và price, đầu ra sẽ là:

999.99

Nếu đầu vào là Keyboard, 49.99, 100 và name, đầu ra sẽ là:

Keyboard

Nếu đầu vào là Mouse, 29.99, 50 và color, đầu ra sẽ là:

Not found

Nếu đầu vào là Monitor, 299.0, 8 và stock, đầu ra sẽ là:

8

Tự làm thử

# Đọc đầu vào
product_name = gets.chomp
price = gets.chomp.to_f
quantity = gets.chomp.to_i
key_to_lookup = gets.chomp

# TODO: Viết code bên dưới
# Tạo một hash tên là 'product' với các khóa "name", "price" và "stock"
# Sau đó dùng phương thức fetch để lấy giá trị ứng với key_to_lookup
# Nếu khóa không tồn tại, dùng nguyên văn nội dung trong hướng dẫn làm giá trị mặc định


# In kết quả ra
puts result
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Ruby online