Mẹo dùng mảng
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 64 trên 88.
Ruby cung cấp các cách viết tắt tiện lợi để tạo mảng, đặc biệt khi làm việc với chuỗi hoặc các số liên tiếp. Những cách viết tắt này giúp tiết kiệm thời gian và làm cho code của bạn gọn gàng hơn.
Cú pháp %w tạo một mảng chuỗi mà không cần dấu ngoặc kép hoặc dấu phẩy:
fruits = %w[apple banana cherry]
puts fruits # Đầu ra: apple, banana, cherryCách này tương đương với việc viết ["apple", "banana", "cherry"] nhưng ngắn gọn hơn nhiều. Mỗi từ được ngăn cách bằng dấu cách sẽ trở thành một phần tử riêng biệt.
Với các mảng ký hiệu, hãy dùng %i:
statuses = %i[pending active completed]
puts statuses # In ra: pending, active, completedĐể tạo mảng gồm các số liên tiếp, bạn có thể chuyển một phạm vi thành mảng bằng to_a:
numbers = (1..5).to_a
puts numbers # Đầu ra: 1, 2, 3, 4, 5Bạn cũng có thể dùng toán tử splat * bên trong dấu ngoặc vuông của mảng:
countdown = [*5..10]
puts countdown # Đầu ra: 5, 6, 7, 8, 9, 10Các cách viết tắt này đặc biệt hữu ích khi bạn cần nhanh chóng định nghĩa một danh sách các giá trị đã biết mà không bị rối mắt bởi dấu ngoặc kép và dấu phẩy.
Thử thách
DễĐọc hai đầu vào:
- Một dòng gồm các từ được phân tách bằng dấu cách (ví dụ:
red green blue yellow) - Hai số nguyên được phân tách bằng dấu phẩy, biểu thị một khoảng (ví dụ:
3,7)
Thực hiện các việc sau:
- Tạo một mảng (array) chuỗi (string) từ đầu vào thứ nhất bằng cú pháp viết tắt
%w. Vì đầu vào vốn đã là một chuỗi, trước tiên bạn cần dùngsplitđể chuyển nó thành mảng, sau đó minh họa%wbằng cách tạo một mảng riêng gồm các từalpha,beta,gamma. - Tạo một mảng ký hiệu bằng
%ivới các giá trịstart,middle,end. - Tạo một mảng gồm các số liên tiếp từ khoảng được cung cấp trong đầu vào thứ hai, dùng toán tử splat (splat operator) bên trong dấu ngoặc vuông của mảng.
In các mục sau trên các dòng riêng:
- Mỗi phần tử của mảng từ đầu vào
- Một dòng trống
- Mỗi phần tử của mảng
%w(alpha, beta, gamma) - Một dòng trống
- Mỗi phần tử của mảng ký hiệu
%i - Một dòng trống
- Mỗi phần tử của mảng khoảng số
Ví dụ, nếu đầu vào là red green blue và 1,5, đầu ra sẽ là:
red
green
blue
alpha
beta
gamma
start
middle
end
1
2
3
4
5Nếu đầu vào là sun moon star và 10,13, đầu ra sẽ là:
sun
moon
star
alpha
beta
gamma
start
middle
end
10
11
12
13Tự làm thử
# Đọc các từ được phân tách bằng dấu cách
words_input = gets.chomp
# Đọc khoảng giá trị (hai số nguyên được phân tách bằng dấu phẩy)
range_input = gets.chomp
# TODO: Viết code bên dưới
# 1. Tạo mảng từ words_input bằng split
# 2. Tạo mảng %w gồm alpha, beta, gamma
# 3. Tạo mảng %i gồm start, middle, end
# 4. Phân tích khoảng giá trị và tạo mảng bằng toán tử splat (*)
# In mỗi phần tử của từng mảng trên một dòng riêng, để dòng trống giữa các mả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 động3Toá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