Làm thế nào để truy cập vào các phần tử mảng ở Perl

Nhiệm vụ. Trong Văn chương trình có một mảng. Bạn cần phải xem những giá trị của một loạt các nguyên tố.

Đây là một ví dụ về làm thế nào để làm nó:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print $arr[1];

Nếu bạn cứu văn bản của chương trình này vào một tập tin script.pl và chạy perl script.pl, màn hình này sẽ xuất hiện các văn bản two.

Vì vậy, những gì đang xảy ra ở đây.

Đầu tiên, chúng tôi tạo ra một mảng tên là @arr. Biến-một mảng bắt đầu với những nhân vật @, biểu tượng này là tương tự đầu tiên một bức thư từ chữ "mảng". Chúng tôi đã tạo ra một loạt và đã được đặt trong 3 của các mục. Trong ví dụ của chúng tôi, tất cả 3 mặt hàng được nhưng tất cả trong một mảng duy nhất có thể chứa một mặt hàng của rất nhiều loại khác nhau, ví dụ như, dây, và số tài liệu tham khảo.

Mỗi phần tử trong mảng của riêng của nó có số. Số này được gọi là "chỉ". Trong một ngôn ngữ Perl và nhiều người khác ngôn ngữ các yếu tố của các mảng được đánh số, bắt đầu với số 0. Trong ví dụ trong mảng có 3 yếu tố:

  • chuỗi 'one' là mảng yếu tố với chỉ số 0
  • chuỗi 'two' là mảng yếu tố với chỉ số 1
  • chuỗi 'three' là mảng yếu tố với chỉ số 2

Để truy cập vào các mảng yếu tố với chỉ số 1 bạn cần phải viết $arr[1]. Viết tên của những mảng và vuông ngoặc viết các chỉ số hàng mà chúng ta muốn lấy lại. Chú ý một năng. Khi chúng tôi quay một yếu tố của các mảng, thay vì một biểu tượng @ trong tên của các mảng bạn cần phải viết các biểu tượng $ (đồng đô la đừng, các biểu tượng là tương tự đầu tiên lá thư trong từ "vô"). Ý tưởng đã được mà với hồ sơ như vậy, rõ ràng là chúng ta nhấn mạnh rằng chúng ta cần phải có một giá trị, nhưng theo ý kiến của tôi, đây là một thiết kế lỗi ngôn ngữ. Nó không đơn giản hóa, nhưng trái lại làm tất cả những khó khăn hơn. Trong một ngôn ngữ Perl6 là cố định, nhưng trong Perl5 khi truy cập vào các phần tử mảng, bạn phải sử dụng đồng đô la đừng $: $arr[1].

Hãy tham khảo những yếu tố cuối cùng trong mảng

Khi bạn tạo ra một mảng @arr tự động xuất hiện biến $#arr , trong đó có các chỉ số của các yếu tố cuối cùng. Khi thêm/loại bỏ nguyên tố từ mảng để biến tự động thay đổi (và thậm chí anh có thể riêng hồ sơ số trong này biến).

Để truy cập vào các phần tử cuối cùng của các mảng bạn có thể sử dụng các ghi $arr[$#arr]. Nhưng dễ dàng hơn sử dụng $arr[-1]. Chỉ số -1 có nghĩa là các chỉ số của các yếu tố cuối cùng trong mảng, các chỉ số -2 — các chót etc.

Sai đường rồi

Đây là mã (cẩn thận, điều này có chứa lỗi):

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print @arr[1]; # error

Này lựa chọn chỉ là đúng, nhưng thay vào đó chính xác để truy cập vào một yếu tố của loạt sử dụng $arr[1]đây sử dụng @arr[1].

Nếu bạn cứu văn bản của chương trình này vào một tập tin script.pl và chạy nó perl script.pl, màn hình sẽ được văn bản two. Chuỗi 'two', đây thực sự là những yếu tố với chỉ số 1 trong mảng @arr, do đó, trong nháy mắt đầu tiên, các lỗi không phải là nhìn thấy được.

Nhưng nếu bạn thêm chương trình dòng mã use warnings; (đó gần như là luôn luôn có giá trị làm), sau đó sẽ được ra nhìn thấy cảnh báo:

Scalar value @arr[1] better written as $arr[1] at script.pl line 7.
two

Hình thức @arr[ ] — được nhận được nhiều giá trị trong mảng. Nó được gọi là "cắt". Một vài ví dụ:

  • @arr[1,2] — trả lại một danh sách của hai yếu tố, các mảng yếu tố với các chỉ số 1 và 2
  • @arr[0..2] — trả lại một danh sách của ba yếu tố, các mảng yếu tố với các chỉ số 0, 1 và 2
  • @arr[1, 1] — trả lại một danh sách của hai yếu tố, lặp đi lặp lại những phần tử ở chỉ 1 lần

Mục @arr[1] — trả lại một danh sách của một yếu tố với những vấn đề một cảnh báo.

Mục @arr[1,] — trả lại một danh sách của một phần tử mà không có sự cảnh báo.

Nếu bạn cần những giá trị của một yếu tố của các mảng, đó là tốt hơn để viết $arr[1].

Chủ đề liên quan

Các bài viết khác