BẮT ĐẦU
KIỂU DỮ LIỆU
TOÁN TỬ
NÂNG CAO
INTERVIEW
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Cách sử dụng Array trong Ruby

Để tiếp tục những tìm hiểu về các kiểu dữ liệu trong ngôn ngữ lập trình Ruby thì hôm nay mình xin phép giới thiệu các bạn một kiểu dữ liệu khác là Array trong Ruby - hay còn gọi là mảng. Chúng ta sẽ học cách sử dụng Array, khởi tạo Array, cũng như những thao tác trên Array thông dụng nhất.

Đây cũng là một trong những kiểu dữ liệu phổ biến nhất, vì vậy bạn cần phải nắm vững để sau này áp dụng vào công việc lập trình của mình.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Array trong Ruby là gì?

Đồng hành với kiểu Hash thì Array cũng sẽ là 1 kiểu dữ liệu mà chúng ta sẽ gặp rất nhiều khi xử lý dữ liệu trong các dự án thực tế, vì 2 kiểu dữ này thường hay dùng để lưu trữ dữ liệu và truy vấn.

Kiểu Array sẽ có dạng như thế này

["Quang", "Phu", "Thuy", "My", "Son"]

dữ liệu sẽ được đặt trong [...].

Một array thuộc class Array

["Quang", "Phu", "Thuy", "My", "Son"].class
=> Array

Array được sử dụng để lưu trữ nhiều dữ liệu với độ dài bao nhiều tùy thích, nghĩa là chúng ta muốn cho bao nhiều phần tử vào cũng được. Không giống như integer hay string, bên trong array lưu trữ được cả 2 kiểu dữ liệu này cùng lúc.

2. Tạo một Array như thế nào ?

Để khởi tạo một Array thì có khá nhiều cách, các đầu tiên là sử dụng từ khóa new.

array = Array.new

chúng ta có thể khởi tạo một Array với size cho trước bằng cách truyền vào một tham số là giá trị size

array = Array.new(10)
=> [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]

array.length
=> 10

Ngoài sử dụng hàm length để kiểm tra độ dài chuỗi chúng ta cũng sẽ có hàm size với chức năng tương tư

array.size
=> 10

Chúng ta cũng có thể khai báo giá trị mặc định cho tất cả các phần tử trong mảng bằng cách truyền thêm 1 tham số nữa, tham số này đại diện cho giá trị mặc định trong mảng

array = Array.new(10, "phu")
=> ["phu", "phu", "phu", "phu", "phu", "phu", "phu", "phu", "phu", "phu"]

Ngoài sử dụng tử khóa new ra thì chúng ta có thể sử dụng [] để định nghĩa array

number = Array[]
=> []
number = Array[1,2,3,4]
=> [1, 2, 3, 4]
number = Array.[](1, 2, 3, 4,5)
=> [1, 2, 3, 4, 5]

Tất nhiên là chúng ta cũng có thể khai báo một mảng với những phần tử cho trước

days =  ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
, "Saturday", "Sunday"]

Ngoài cách khai báo mảng trực tiếp ra mình sẽ giới thiệu với các bạn một cú pháp mới khá phổ biến trong Ruby để khai báo mảng đó là %w{} bên trong đó là các single word.

days = %w{Monday Tuesday Wednesday Thursday Friday Saturday Sunday}

# tương ứng với 

days =  ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

Lưu ý: %w{} sẽ bỏ qua các dấu quotes và dấu phẩy

3. Truy cập vào các phần tử trong Array

Để có thể truy cập vào các phần tử trong mảng thì chúng ta sẽ truy cập bằng index, index sẽ được đánh từ 0 lần lượt từ trái qua phải

days =  ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
, "Saturday", "Sunday"]
=> ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

days[0]
=> "Monday"

days[1]
=> "Tuesday"

Khi chúng ta truy cập vào phần tử không tồn tại trong mảng thì kết quả sẽ trả về nil

days[11]
=> nil

Nếu muốn tìm giá trị của index của một phần tử trong mảng bạn dùng hàm index

days.index("Monday")
=> 0

Cũng như tìm phần tử mảng thì tìm index của mảng nếu không tồn tại kết quả cũng sẽ trả về nil

days.index("test")
=> nil                                                                                                                                                                                                                                                                                                                                                              

Để lấy phần tử mảng theo chiều ngược lại, tức là từ cuối đi lên (phải qua trái), thì chúng ta sẽ lấy lần lượt các chỉ số là -1, -2, -3 ...

days[-1]
=> "Sunday"

days[-2]
=> "Saturday"

Ngoài cách thủ công trên là lấy theo chỉ số, thì Ruby cũng cung cấp cho chúng ta 2 phương thức để lấy phần tử đầu tiên và cuối cùng của mảng là firstlast

days.first
=> "Monday"

days.last
=> "Sunday"

4. Nested Array

Nested Array hay còn gọi là mảng lồng nhau, cho phép chúng ta định nghĩa một mảng trong mảng. Đây là một ví dụ về mảng lồng nhau

nested = [1, 2, 3, [4, 5, 6]]
=> [1, 2, 3, [4, 5, 6]]

Việc truy cập các phần tử mảng thì cũng không khác gì mảng bình thường, nhưng để truy cập vào các phần tử mảng trong mảng thì có chút lưu ý.

Như ở trên ví dụ kia mảng lồng bên trong có chỉ số index là 3, nếu muốn truy cập vào phần tử thứ 1 của mảng lồng đó các bạn làm như sau

nested[3][0]
=> 4

cũng tương tự với các phần tử còn lại.

5. Thêm mới phần tử mảng

Cách đơn giản nhất để thêm mới phần tử mảng là gọi đến index (chỉ số) phần tử tiếp theo trong mảng và gán cho nó giá trị

array = [1, 2, 3, 4]
=> [1, 2, 3, 4]

array[4] = 5
=> 5

puts array
=> [1, 2, 3, 4, 5]

Nếu như bạn gọi đến index đã tồn tại, nó sẽ thay đổi luôn giá trị của phần tử tại chỉ số đó

array[0] = 5
=> 5

puts array
=> [5, 2, 3, 4]

Ngoài ra chúng ta cũng có thể sử dụng hàm có sẵn trong Ruby cung cấp để thêm mới phần tử vào vị trí cuối cùng của mảng bằng cách dùng hàm push

array = [1, 2, 3, 4]
=> [1, 2, 3, 4]

array.push(5)
=> [1, 2, 3, 4, 5]

puts array
=> [1, 2, 3, 4, 5]

Nhanh hơn nữa chúng ta có cú pháp riêng dành cho mảng đó là << cũng để thêm mới phần tử mảng

array = [1, 2, 3, 4]
=> [1, 2, 3, 4]

array << 5
=> [1, 2, 3, 4, 5]

puts array
=> [1, 2, 3, 4, 5]

6. Xóa phần tử mảng

Cũng giống với thêm mới phần tử, Ruby cũng cung cấp cho chúng ta phương thức để xóa luôn phần tử mảng.

Để xóa phần tử đầu tiên chúng ta có thể dùng hàm shift

array = [1, 2, 3, 4]
=> [1, 2, 3, 4]

array.shift
=> 1

puts array
=> [2, 3, 4]

Để xóa phần tử cuối cùng có sẵn phương thức pop

 array = [1, 2, 3, 4]
=> [1, 2, 3, 4]
 array.pop
=> 4
puts array
=> [1, 2, 3]

Hoặc là để xóa phần tử với giá trị đã biết chúng ta sử dụng hàm delete

array = [1, 2, 3, 4]
=> [1, 2, 3, 4]

array.delete(1)
=> 1

puts array
=> [2, 3, 4]

Nếu muốn xóa phần tử mảng với index đã biết sử dụng hàm delete_at. Giả sử chúng ta muốn xóa phần tử mảng với index là 2.

array = [1, 2, 3, 4]
=> [1, 2, 3, 4]

array.delete_at(2)
=> 3

púts array
=> [1, 2, 4]

7. Kết luận

Trên đây là những khái niêm để chúng ta có thể làm việc được với Array trong Ruby. Đây là kiểu dữ liệu rất hay gặp để xử lý dữ liệu trong thực tế, vì vậy các bạn hãy cố gắng nắm thật kĩ những khái niệm trên để làm việc với kiểu dữ liệu này.

Cùng chuyên mục:

Block trong Ruby

Block trong Ruby

Block là một khối lệnh được đặt trong ...

Iterator trong Ruby

Iterator trong Ruby

Ở bài trước mình có nói với các bạn về việc sử dụng các vòng…

Vòng lặp trong Ruby: Vòng lặp for / while / until / loop

Vòng lặp trong Ruby: Vòng lặp for / while / until / loop

Khi học một ngôn ngữ lập trình thì không thể không tìm hiểu tới một…

Câu lệnh điều kiện trong Ruby

Câu lệnh điều kiện trong Ruby

Trong bài này chúng ta sẽ học các lệnh điều kiện trong Ruby, đây là…

Các toán tử trong Ruby

Các toán tử trong Ruby

Nói đến toán tử thì dù bạn học ngôn ngữ nào đi nữa thì việc…

Cách sử dụng Ranges trong Ruby

Cách sử dụng Ranges trong Ruby

Ví dụ bạn cần tạo ra một dãy từ 1 đến 100 thì có thể…

Kiểu dữ liệu Symbol trong Ruby

Kiểu dữ liệu Symbol trong Ruby

Symbol giống như một String thế nhưng Symbol là một chuỗi bất biến nghĩa là…

Kiểu dữ liệu Text trong Ruby (còn gọi là chuỗi / string)

Kiểu dữ liệu Text trong Ruby (còn gọi là chuỗi / string)

Kiểu dữ liệu Boolean trong Ruby: True, False và Nil

Kiểu dữ liệu Boolean trong Ruby: True, False và Nil

Boolean là kiểu dữ liệu rất quan trọng, nó được dùng rất nhiều trong những…

Kiểu dữ liệu Hashes trong Ruby: Hiểu từ đơn giản đến phức tạp

Kiểu dữ liệu Hashes trong Ruby: Hiểu từ đơn giản đến phức tạp

Nếu bạn đã từng làm việc với một vài ngôn ngữ khác trước khi mà…

Hiểu về Method Missing trong Ruby

Hiểu về Method Missing trong Ruby

Chắc hẳn với các lập trình viên chúng ta ai cũng có thể đôi lần…

Kiểu dữ liệu Number trong Ruby (Kiểu số Integer, Float, ...)

Kiểu dữ liệu Number trong Ruby (Kiểu số Integer, Float, ...)

Trước tiên, chúng ta cùng nhìn qua một bức ảnh tổng quát phân cấp các…

Ruby là gì? Ai đã sáng tạo ra ngôn ngữ viêm kim cương này?

Ruby là gì? Ai đã sáng tạo ra ngôn ngữ viêm kim cương này?

Từ những năm 2008, thời mà mình còn học đại học thì Ruby là ngôn…

Các loại biến và cách sử dụng Module trong Ruby

Các loại biến và cách sử dụng Module trong Ruby

Bất kì một ngôn ngữ lập trình nào đều có khái niệm biến và ruby…

Cách tạo Method - Class và Object trong Ruby

Cách tạo Method - Class và Object trong Ruby

Trong bài này mình sẽ hướng dẫn các bạn cách tạo hàm, gọi hàm. Cách…

Cú pháp trong Ruby - Chạy Hello World

Cú pháp trong Ruby - Chạy Hello World

Tổng quan về cú pháp trong ruby. Hướng dẫn tạo file và chạy hello world…

Hướng dẫn cài đặt Ruby trên Window, Linux và MacOS

Hướng dẫn cài đặt Ruby trên Window, Linux và MacOS

Hướng dẫn chi tiết cách thiết lập môi trường lập trình Ruby trên hệ điều…

Top