- Mảng trong Ruby
- Kiểu phần tử, thêm bớt phần tử mảng
- Lấy ra nhiều phần tử mảng
- Kết hợp mảng
- Các phương thức trong mảng
- Duyệt qua các phần tử mảng
- Mảng nhiều chiều
Mảng trong Ruby
Mảng là một danh sách các phần tử, khai báo mảng dùng ký hiệu []
rồi liệt kê bên
trong nó giá trị các phần tử, mỗi phần tử cách nhau bởi dấu ,
# mảng các số numbers = [1,3,5,7] # mảng tên names = ["Nam", "Minh", "Long", "Viet"]
Mỗi phần tử trong mảng có một chỉ số, phần tử đầu tiên chỉ số là 0
, để truy cập (đọc/gán)
một phần tử dùng kỹ hiệu [chỉ-số]
names = ["Hùng", "Hà", "Dân"] puts names[2] # Đọc phần tử chỉ số 2 của mảng names names[2] = "Nguyễn Văn Dân" # Gán phần tử thứ hai một giá trị mới puts names[2] # Đọc phần tử chỉ số 2 của mảng names # In ra: # Dân # Nguyễn Văn Dân
Trong Ruby có thể dùng chỉ số âm, -1
là phần tử cuối của mảng, -2
là
trước phần tử cuối ...
Kiểu phần tử trong mảng, thêm bớt phần tử mảng
- Các phần tử trong mảng có thể có kiểu dữ liệu bất kỳ, phần tử này một kiểu phần tử kia có thể là kiểu khác.
mang=[1, 1.2, "Abc"]
- Để thêm phần tử mới vào mảng, nối vào cuối dùng toán tử
<<
mang << 10 # thêm một phần tử cuối, có giá trị 10
Có thể thay toán tử
<<
bằng phương thứcpush
mang.push(10) # thêm một phần tử cuối, có giá trị 10
- Để chèn phần tử vào vị trí có index cụ thể dùng phương thức insert
mang.insert(0,100) # chèn vào vị trí đầu tiên phần tử có giá trị 100
- Để xóa phần tử cuối dùng phương thức
pop
, xóa một phần tử ở index cụ thể dùng phương thứcdelete_at
arr = [1,2,"A", "B"] a = arr.pop # xóa phần tử cuối, đồng thời lưu lại vào a b = arr.delete_at(1) # xóa phần tử chỉ số 1, đồng thời lưu lại vào b puts arr
Lấy ra nhiều phần tử mảng
Có thể dùng dải dữ liệu mô tả chỉ số để trích xuất ra mảng con có các phần tử tương ứng với chỉ số đó
arr = [1,3,5,7,9,11] subarr = arr[1..4] puts subarr.inspect # In ra # [3, 5, 7, 9]
Kết hợp mảng
Có thể kết hợp hai mảng thành một mảng
a = [1, 2, 3, 4] b = [4, 5] c = a + b print c.inspect # [1, 2, 3, 4, 4, 5]
Có thể thực hiện phép hiệu hai tập hợp
a = [1, 2, 3, 4] b = [4, 5, 7] c = a - b # c gồm các phần tử thuộc a nhưng không thuộc b, a - b là khác b - a puts c.inspect # [1, 2, 3]
Có thể tạo mảng mới bằng cách copy số phần nhiều lần với phép *
a = [1,2,3] puts (a * 3).inspect # [1, 2, 3, 1, 2, 3, 1, 2, 3]
Phép toán giao hai mảng &
Toán tử &
lấy giao hai mảng, các phần tử có cả ở hai mảng
a = [2, 3, 7, 8] b = [2, 7, 9] print a & b # [2, 7]
Phép toán hợp hai mảng |
Toán tử |
lấy hợp của hai mảng, gồm tất cả các phần tử có trong hai mảng, các
phần tử trùng nhau giữ lại 1
a = [2, 3, 7, 8] b = [2, 7, 9] print a | b # [2, 3, 7, 8, 9]
Đảo thứ tự mảng
Có thể tạo ra mảng mới mà các phần tử có chỉ số đảo ngược so với mảng gốc
bằng phương thức reverse
arr = [1, 2, 3] puts arr.reverse.inspect # [3,2,1]
Có thể dùng phương thức reverse!
để đảo ngược bản thân mảng gốc
Các phương thức trong mảng
Phương thức | Diễn giải |
---|---|
array.length |
Trả về số lượng phần tử trong mảng |
array.sort |
Trả về mảng mới có sắp xếp |
array.uniq |
Trả về mảng mới các phần tử trùng nhau giữ lại một |
array.uniq! |
Phần tử trùng nhau giữ lại một |
array.freeze |
Ngăn cản sửa đổi mảng |
array.include?(obj) |
Trả về true nếu có phần tử với giá trị obj |
array.max |
Trả về phần tử lớn nhất |
array.min |
Trả về phần tử nhỏ nhất |
Duyệt các phần tử mảng
Duyệt qua các phần tử mảng bằng lệnh for
arr = [3,5,6,78] for x in arr puts "Giá trị: #{x}" end
Duyệt qua các phần tử bằng phương thức each
a = [ "a", "b", "c" ] a.each { |x| # định nghĩa biến lưu phần tử mảng khi duyệt qua print x, " -- " }
Duyệt qua mỗi phần tử của mảng và thực hiện khối lệnh {}
cho mỗi phần tử mảng đó,
giá trị phần tử mảng lưu ở biến định nghĩa trong ký hiệu |biến|
xuất hiện đầu khối.
Duyệt qua các chỉ số phần tử bằng phương thức each_index
a = [ "a", "b", "c" ] a.each_index { |index| puts "phần tử #{index} có giá trị #{a[index]}" } # phần tử 0 có giá trị a # phần tử 1 có giá trị b # phần tử 2 có giá trị c
Mảng nhiều chiều - mảng trong mảng
Mỗi phần tử trong mảng có thể là đối tượng bất kỳ, có nghĩa là có thể là một mảng con. Bảng cách khai báo mảng chứa các phần tử cũng là mảng sẽ hình thành lên mảng nhiều chiều.
Ví dụ mảng trong mảng
a = [[1,2,3], [4,5,6]] puts a[1][2] # Truy vấn vào mảng con thứ hai, lấy phần tử thứ ba của mảng con này # 6