Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng lớp Ruby’s Array (Ví dụ + Phương pháp hữu ích)

Mảng là gì?

Mảng là một lớp Ruby được tích hợp sẵn, chứa một danh sách không có hoặc nhiều mục và bao gồm các phương pháp giúp bạn dễ dàng thêm, truy cập và lặp lại tất cả các mục này.

Điều này rất hữu ích, vì nếu mảng không tồn tại, bạn sẽ phải sử dụng nhiều biến.

Ví dụ :

a = 1
b = 2
c = 3

Nhưng thay vào đó, bạn có thể làm :

numbers = [1, 2, 3]

Phần tốt nhất?

Bạn có thể đặt bất cứ thứ gì bên trong một mảng!

Thích :

  • Số
  • Chuỗi
  • Nhiều mảng hơn! (điều đó sẽ làm cho nó trở thành một mảng đa chiều)

Hãy cùng tìm hiểu thêm về mảng để bạn có thể sử dụng chúng một cách hiệu quả nhất!

Nội dung

  • 1 Mảng không được lập chỉ mục
  • 2 Phương thức Mảng Ruby
  • 3 Cách chuyển một mảng thành một chuỗi
  • 4 Mảng đa chiều (Mảng 2D và hơn thế nữa)
  • 5 Cách Lặp lại Các Mảng Ruby
  • 6 Lập chỉ mục tiêu cực
  • 7 Hoạt động Mảng khác
  • 8 Hoạt động với Nhiều Mảng
  • 9 Kết luận
    • 9.1 Có liên quan

Mảng không được lập chỉ mục

Bạn có thể truy cập các phần tử bên trong một mảng bằng cách sử dụng chỉ mục của chúng , bắt đầu từ 0.

Nếu bạn có một mảng với các từ "mèo", "chó" và "hổ", nó sẽ như thế này:

Cách sử dụng lớp Ruby’s Array (Ví dụ + Phương pháp hữu ích)

Dưới đây là một ví dụ về mã đại diện cho dữ liệu trong hình:

["cat", "dog", "tiger"]

Bây giờ :

Bạn sẽ khám phá những gì bạn có thể làm với mảng!

Phương thức mảng Ruby

Hãy bắt đầu bằng cách tìm hiểu cách bạn có thể tạo một mảng.

Bạn có thể tạo một mảng trống, sau đó thêm các mục mới vào đó hoặc bạn có thể tạo một mảng với các giá trị bắt đầu.

Khởi tạo một mảng trống :

users = []

Khởi tạo một mảng với dữ liệu :

users = ["john", "david", "peter"]

Nếu bạn đang tạo một mảng chỉ chuỗi…

Bạn có thể tránh phải nhập dấu ngoặc kép cho mọi chuỗi bằng cách tạo một mảng với %w .

Ví dụ :

users = %w(john david peter)

Bây giờ chúng ta có một mảng, bạn có thể truy cập các phần tử mà nó chứa.

Đây là cách thực hiện :

users[0] # First element of the array
users[1] # Second element of the array
users[2] # Third element of the array

Bạn cũng có thể sử dụng các phương pháp đầu tiên và cuối cùng:

users.first # First element of the array
users.last  # Last element of the array

Dưới đây là cách thêm các mục vào mảng của bạn:

# Both of these have the same effect, << is preferred.
users.push "andrew"
users << "andrew"

Đây là cách bạn xóa các phần tử khỏi mảng của mình:

last_user = users.pop # Removes the last element from the array and returns it
user.delete_at(0)     # Removes the first element of the array

Ngoài ra còn có các phương thức shift &unshift, tương tự như pop / push nhưng lấy hoặc thêm các phần tử phía trước mảng.

users.unshift "robert"  # Adds an element in front of the array
users.shift             # Removes the first element of the array and returns it

Mảng này có chứa hoặc bao gồm một mục nào đó không?

Kiểm tra xem một giá trị có tồn tại trong một mảng trong Ruby hay không:

numbers = [1,2,3]

numbers.include?(2)
# true

numbers.include?(10)
# false

Độ dài của mảng là bao nhiêu? (Nói cách khác, nó chứa bao nhiêu phần tử)

words = ["cat", "coconut", "bacon"]
words.size

# 3

Đây là một bảng gian lận nhỏ dành cho bạn :

Hoạt động Phương pháp
khởi tạo Array.new, [],% w
đọc [0], đầu tiên, cuối cùng
thêm đẩy, <<, không chuyển
xóa pop, delete_at, shift

Cách chuyển một mảng thành một chuỗi

Bạn có thể chuyển đổi bất kỳ mảng nào thành chuỗi bằng cách sử dụng Array#join phương pháp.

Đây là một ví dụ :

letters = %w(a b c d)
letters.join

# "abcd"

Lưu ý rằng phương thức này nhận 1 tham số tùy chọn để bạn có thể xác định dấu phân cách giữa các phần tử mảng khi chúng được nối với nhau.

letters = %w(a b c d)
letters.join(" ")

# "a b c d"

Nếu bạn muốn thao tác ngược lại, từ chuỗi sang mảng, bạn muốn sử dụng split phương pháp:

"a b c".split

Kết quả là:

["a", "b", "c"]

Mảng đa chiều (Mảng 2D và hơn thế nữa)

Một mảng có thể bao gồm các mảng khác, chúng tôi gọi đó là mảng nhiều chiều.

Ví dụ về mảng 2d :

users = [
 [1, 'Peter'],
 [2, 'Steven']
]

Để truy cập phần tử đầu tiên từ mảng con đầu tiên, bạn có thể sử dụng cú pháp sau:

users[0][0]

# 1

Và đối với phần tử thứ hai của mảng con đầu tiên:

users[0][1]

# 'Peter'

Có một số trường hợp bạn muốn chuyển đổi mảng nhiều chiều thành mảng thông thường.

Bạn có thể làm điều đó bằng cách sử dụng phương pháp làm phẳng:

users.flatten

# [1, "Peter", 2, "Steven"]

Làm thế nào để Lặp lại các Mảng Ruby

Bây giờ bạn đã có một mảng, sẽ không hay nếu bạn có thể liệt kê nội dung của nó và in chúng ra phải không?

Tin tốt là bạn có thể!

Ví dụ :In mảng của bạn bằng cách sử dụng mỗi

users.each { |item| puts item }

Nếu bạn cần làm việc với cả giá trị và chỉ mục thì bạn có thể sử dụng phương thức của mỗi mảng với chỉ mục:

users.each_with_index { |item, idx| puts "#{item} with index #{idx}" }

Lưu ý :Hầu hết các hoạt động lặp này đều khả dụng nhờ mô-đun Enumerable, được trộn vào lớp Mảng theo mặc định.

Ví dụ :Viết hoa mọi từ trong Mảng của bạn bằng cách sử dụng bản đồ.

users = users.map { |user| user.capitalize }
users = users.map(&:capitalize)

map Phương thức không sửa đổi mảng tại chỗ, nó chỉ trả về một mảng mới với các phần tử đã sửa đổi, vì vậy chúng ta cần gán lại kết quả cho một biến.

Có một bản đồ! (lưu ý đến dấu chấm than) phương thức sẽ sửa đổi trực tiếp mảng, nhưng nói chung, phiên bản đơn giản hơn được ưu tiên hơn.

Một điều khác bạn có thể muốn làm là tìm tất cả các mục trong mảng của bạn phù hợp với các tiêu chí nhất định.

Ví dụ :Tìm tất cả các số lớn hơn 10:

numbers = [3, 7, 12, 2, 49]
numbers.select { |n| n > 10 }
# => 12, 49

Lập chỉ mục phủ định

Bạn đã học được rằng nếu bạn muốn truy cập một phần tử nhất định từ một mảng Ruby, bạn cần sử dụng lập chỉ mục (hoặc các phương thức như first &last ).

Nhưng còn lập chỉ mục tiêu cực thì sao?

Tôi đang nói về việc sử dụng một cái gì đó như -1 làm chỉ mục mảng của bạn.

Những gì Ruby sẽ làm là bắt đầu từ cuối mảng. Vì vậy, -1 sẽ nhận được cho bạn mục cuối cùng, -2 sẽ giúp bạn thứ hai đến cuối cùng, v.v.

Ví dụ :

letters = ["a", "b", "c"]

letters[-1]
# "c"

letters[-2]
# "b"

Các phép toán mảng khác

Có rất nhiều việc bạn có thể làm bằng cách sử dụng mảng, chẳng hạn như sắp xếp chúng hoặc chọn các phần tử ngẫu nhiên.

Bạn có thể sử dụng phương pháp sắp xếp để sắp xếp một mảng, điều này sẽ hoạt động tốt nếu tất cả những gì bạn có là chuỗi hoặc số trong mảng của bạn. Để biết cách sắp xếp nâng cao hơn, hãy xem sort_by.

numbers = numbers.sort

Bạn cũng có thể xóa các phần tử trùng lặp khỏi một mảng, nếu bạn thấy mình thường xuyên làm điều này, bạn có thể muốn xem xét sử dụng Tập hợp để thay thế.

numbers = [1, 3, 3, 5, 5]
numbers = numbers.uniq
# => [1, 3, 5]

Lưu ý rằng điều này không thay đổi vĩnh viễn mảng của bạn. Hầu hết các phương thức Ruby sẽ tạo một mảng mới với những thay đổi mà bạn yêu cầu. Vì vậy, nếu bạn muốn lưu kết quả, bạn cần sử dụng một biến hoặc trong ví dụ này, hãy sử dụng uniq! phương pháp.

Nếu bạn muốn chọn một phần tử ngẫu nhiên từ mảng của mình, bạn có thể sử dụng sample phương pháp:

numbers.sample

Bạn cũng có thể muốn "cắt" mảng của mình, lấy một phần của nó thay vì toàn bộ.

Ví dụ :Lấy 3 phần tử đầu tiên từ mảng mà không thay đổi nó:

numbers.take(3)
numbers[0,3]

Bạn có thể thực hiện cắt mảng Ruby nâng cao hơn. Ví dụ:bạn có thể muốn lấy tất cả các phần tử trừ phần tử đầu tiên:

numbers[1..-1]

Lưu ý sự khác biệt giữa việc sử dụng dấu phẩy (0,3 ) &một dải ô (1..-1 ). Câu hỏi đầu tiên cho biết "lấy cho tôi 3 phần tử bắt đầu từ chỉ mục 0", trong khi phần tử cuối cùng nói "lấy cho tôi các ký tự trong phạm vi này".

Nhận kích thước của một mảng:

numbers.size
# 5

Kiểm tra xem một mảng có trống không:

numbers.empty?
# false

Xóa nil giá trị:

numbers << nil
# [1, 3, 3, 5, 5, nil]

numbers.compact
# [1, 3, 3, 5, 5]

Hoạt động với nhiều mảng

Nếu bạn có hai mảng và muốn nối hoặc hợp nhất chúng thành một mảng, bạn có thể thực hiện như sau:

# Faster, because this changes the users array
users.concat(new_users)  

# Slower, because this creates a new array
users += new_users       

Bạn cũng có thể xóa các phần tử khỏi một mảng như thế này, trong đó users_to_delete cũng là một mảng:

users = users - users_to_delete

Cuối cùng, bạn có thể nhận được các phần tử xuất hiện trong hai mảng cùng một lúc:

users & new_users

Kết luận

Mảng Ruby rất hữu ích và chúng sẽ là một đồng minh mạnh mẽ bên cạnh bạn.

Hãy nhớ thực hành tạo một mảng, thêm các phần tử vào nó, truy cập các phần tử bằng chỉ mục, v.v. Ngoài ra, hãy đọc về hàm băm Ruby, một lớp quan trọng khác có thể được kết hợp với các mảng để viết mã thú vị hơn.

Thực hành làm cho hoàn hảo!

Nếu bạn thấy điều này hữu ích, vui lòng chia sẻ bài đăng này và đăng ký nhận bản tin của tôi bên dưới 🙂