Menu
CoddyTech

Dùng symbol làm khóa 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 78 trên 88.

Đến giờ, bạn đã dùng chuỗi làm khóa trong hash bằng cú pháp hash rocket. Tuy nhiên, các nhà phát triển Ruby thường dùng symbol làm khóa, giúp cách viết gọn gàng và hiệu quả hơn.

Bạn còn nhớ symbol (symbol) từ những bài học trước không? Đây là các định danh gọn nhẹ, bất biến và bắt đầu bằng dấu hai chấm. Khi dùng symbol làm khóa, Ruby cung cấp cú pháp viết tắt đặc biệt:

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

puts person  # Đầu ra: {:name=>"Alice", :age=>25, :city=>"Paris"}

Hãy chú ý cách name: thay thế cho :name =>. Cách viết tắt này chỉ hoạt động khi khóa là một symbol. Để truy cập các giá trị, hãy dùng symbol với dấu ngoặc vuông:

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

puts person[:name]  # Đầu ra: Alice
puts person[:age]   # Đầu ra: 25

Việc thêm và chỉnh sửa các mục cũng hoạt động theo cách tương tự:

person = {name: "Alice"}

person[:city] = "Paris"
person[:name] = "Bob"

puts person  # Đầu ra: {:name=>"Bob", :city=>"Paris"}

Symbol thường được dùng làm khóa băm vì chúng so sánh nhanh hơn chuỗi và tốn ít bộ nhớ hơn. Bạn sẽ thấy cách này xuất hiện xuyên suốt code Ruby, vì vậy bạn nên làm quen với nó.

challenge icon

Thử thách

Dễ

Đọc ba dòng đầu vào:

  1. Thương hiệu xe (chuỗi)
  2. Tên mẫu xe (chuỗi)
  3. Năm sản xuất (số nguyên)

Tạo một hash có tên car bằng cú pháp rút gọn symbol (ví dụ: key: value) với các cặp khóa-giá trị sau:

  • :brand ánh xạ đến thương hiệu xe
  • :model ánh xạ đến tên mẫu xe
  • :year ánh xạ đến năm sản xuất (dưới dạng số nguyên)

Sau đó thực hiện các thao tác sau:

  1. In ra giá trị của khóa :model
  2. Thêm khóa mới :color với giá trị "black"
  3. Cập nhật khóa :year bằng cách cộng 1 vào giá trị hiện tại
  4. In ra hash cuối cùng

Ví dụ, nếu đầu vào là Toyota, Camry và 2020, đầu ra sẽ là:

Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}

Nếu đầu vào là Honda, Civic và 2018, đầu ra sẽ là:

Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}

Nếu đầu vào là Ford, Mustang và 2023, đầu ra sẽ là:

Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}

Tự làm thử

# Đọc đầu vào
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i

# TODO: Viết code của bạn bên dưới
# 1. Tạo một hash tên 'car' bằng cú pháp viết tắt symbol với các khóa :brand, :model và :year

# 2. In ra giá trị của khóa :model

# 3. Thêm khóa mới :color với giá trị "black"

# 4. Cập nhật khóa :year bằng cách cộng 1 vào giá trị hiện tại

# 5. In ra hash cuối cùng
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