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: 25Khó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: UnknownCá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.
Thử thách
DễĐọc bốn dòng đầu vào:
- Tên sản phẩm (chuỗi)
- Giá (số thực)
- Số lượng hàng trong kho (số nguyên)
- 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.99Nếu đầu vào là Keyboard, 49.99, 100 và name, đầu ra sẽ là:
KeyboardNếu đầu vào là Mouse, 29.99, 50 và color, đầu ra sẽ là:
Not foundNếu đầu vào là Monitor, 299.0, 8 và stock, đầu ra sẽ là:
8Tự 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 resultBà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