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: 25Việ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ó.
Thử thách
DễĐọc ba dòng đầu vào:
- Thương hiệu xe (chuỗi)
- Tên mẫu xe (chuỗi)
- 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:
- In ra giá trị của khóa
:model - Thêm khóa mới
:colorvới giá trị"black" - Cập nhật khóa
:yearbằng cách cộng 1 vào giá trị hiện tại - 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ùngBà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
4Toán tử phần 2
Toán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giảnToán tử logic phần 3Toán tử logic phần 42Biến và kiểu dữ liệu
Số và biếnKiểu dữ liệu chuỗiKiểu dữ liệu BooleanKiểu dữ liệu SymbolKiểm tra kiểu dữ liệuQuy ước đặt tênÔn tập: tạo biến8Vòng lặp
Vòng lặp for với khoảng giá trịVòng lặp whileThoátTiếp tụcÔn tập: giai thừaVòng lặp timesVòng lặp untilVòng lặp lồng nhauÔn tập: đầu vào động11Mảng
Tạo mảngTruy cập phần tử trong mảngThay đổi mảngPhương thức của mảngÔn tập: Mảng tíchÔn tập: Mảng đảo ngượcMẹo dùng mảng14Từ điển
Tạo từ điểnTruy cập phần tử trong từ điểnChỉnh sửa từ điểnPhương thức của từ điểnÔn tập: từ điển sản phẩmDùng symbol làm khóa trong từ điển3Toán tử phần 1
Toán tử số họcToán tử moduloPhép tính số học rút gọnÔn tập: Toán cơ bảnToán tử so sánh6Nhập xuất cơ bản
In ra bằng putsIn ra bằng print và pIn ra bằng biếnNhập dữ liệu bằng getsPhương thức chompChuyển đổi kiểu dữ liệuÔn tập: Tính tuổiÔn tập: Đúng hay sai9Phương thức
Định nghĩa phương thứcTham số phương thứcGiá trị trả vềÔn tập: phương thức SigmaÔn tập: phương thức xác thựcGiá trị tham số mặc định15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát chương trìnhTự luyện tập: Trình biên dịch Ruby online