sách gpt4 ai đã đi

Giới thiệu về hai cách tham chiếu (truyền) tham số trong các chương trình con trong Perl

In lại Tác giả:qq735679552 Thời gian cập nhật: 2022-09-29 22:32:09 29 4
mua khóa gpt4 Nike

CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.

Bài đăng trên blog CFSDN này giới thiệu hai cách tham chiếu (truyền) tham số trong các chương trình con trong Perl. Bài đăng được tác giả thu thập và sắp xếp. Nếu bạn quan tâm đến bài viết này, vui lòng thích.

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

Sao chép mã Mã như sau:

sử dụng nghiêm ngặt; #Đây là hai mảng my @i =('1','2','3'); my @j =('a','b','c'),

  .

# Trước khi xử lý, chúng ta in chúng ra để xem chúng trông như thế nào print "Trong chương trình chính trước khi gọi chương trình con:i="."@i\n"; print "Trong chương trình chính trước khi gọi chương trình con:j="."@j\n",

#Sau đó chúng ta xử lý nó thông qua subroutinereference_sub(@i,@j); print "Trong chương trình chính sau khi gọi subroutine:i="."@i\n"; print "Trong chương trình chính sau khi gọi subroutine:j="."@j\n"; #Sau đây là subroutinesub reference_sub { my (@i,@j)=@_; print "Trong subroutine:i="."@i\n"; print "trong subroutine:j="."@j\n"; #Ở đây chúng ta sử dụng pop và shift để xử lý @_ push(@i,'4'); shift(@j); } .

Kết quả như sau:

Sao chép mã Mã như sau:

F:\>perl\a.pl
Trong chương trình chính trước khi gọi chương trình con:i=1 2 3
Trong chương trình chính trước khi gọi chương trình con:j=abc
Trong chương trình con: i=1 2 3 abc
trong chương trình con:j=
Trong chương trình chính sau khi gọi chương trình con:i=1 2 3
Trong chương trình chính sau khi gọi chương trình con:j=abc
F:\>

Trong ví dụ này, có hai tham số @i và @j trong chương trình con. Khi chúng ta truyền hai tham số này cho chương trình con, chương trình con sẽ đưa tất cả chúng vào mảng @_ được tích hợp sẵn. Sau đó, sự khác biệt giữa @i và @j biến mất trong @_, tức là chúng bị trộn lẫn trong @_ và không thể phân biệt được. Khi chúng ta muốn lấy lại cả hai, chúng ta thấy rằng @i = 1 2 3 abc và @j rỗng. Trong nhiều trường hợp, đây rõ ràng không phải là kết quả chúng ta mong muốn, vì vậy chúng ta cần sử dụng pass by reference (được dịch là "tham chiếu đến" trong Chương 6 của Big Camel Book). Chúng ta chỉ thực hiện một thay đổi đối với mã, tức là trong chương trình như sau:

Sao chép mã Mã như sau:

sử dụng nghiêm ngặt,

  .

#Đây là hai mảng my @i =('1','2','3'); my @j =('a','b','c'),

# Trước khi xử lý, chúng ta in chúng ra để xem chúng trông như thế nào print "Trong chương trình chính trước khi gọi chương trình con:i="."@i\n"; print "Trong chương trình chính trước khi gọi chương trình con:j="."@j\n",

#Sau đó, chúng ta xử lý nó thông qua subroutinereference_sub(\@i,\@j);#Ở đây, chúng ta thêm một dấu gạch chéo ngược, được truyền theo tham chiếu (được dịch trong Chương 6 của cuốn sách Big Camel) print "Trong chương trình chính sau khi gọi subroutine:i="."@i\n"; print "Trong chương trình chính sau khi gọi subroutine:j="."@j\n"; #Sau đây là subroutine reference_sub { my ($i,$j)=@_;#Tham chiếu cũng là một dạng dữ liệu đặc biệt. Tất cả chúng đều được lưu trữ dưới dạng biến vô hướng trong @_ print "Trong subroutine:i="."@$i\n";Vì vậy, khi chúng ta tham chiếu chúng ở đây, chúng ta thêm hai ký hiệu vào trước chúng, @ biểu diễn một mảng và $ biểu diễn một tham chiếu thứ cấp. print "in subroutine:j="."@$j\n"; print "In subroutine:the third element is $$j[2]\n";#Khi tham chiếu đến một phần tử trong một mảng, $ đầu tiên và j[2] tiếp theo biểu diễn phần tử thứ ba trong mảng, và $ thứ hai biểu diễn tham chiếu thứ cấp. #Ở đây chúng ta sử dụng pop và shift để xử lý @_ push(@$i,'4'); shift(@$j); } .

Sau đây là kết quả:

Sao chép mã Mã như sau:

F:\>perl\a.pl
Trong chương trình chính trước khi gọi chương trình con:i=1 2 3
Trong chương trình chính trước khi gọi chương trình con:j=abc
Trong chương trình con: i=1 2 3
trong chương trình con:j=abc
Trong chương trình con: phần tử thứ ba là c
Trong chương trình chính sau khi gọi chương trình con:i=1 2 3 4
Trong chương trình chính sau khi gọi chương trình con:j=bc
F:\>

Chúng ta có thể quan sát kết quả cuối cùng. Sau khi gọi chương trình con, giá trị của @i thay đổi: i=1 2 3 4 và j=bc. Có nghĩa là các thao tác đẩy và dịch chuyển mà chúng ta thực hiện trên mảng trong chương trình con đã có hiệu lực trong chương trình chính. Tại sao điều này lại xảy ra? Nói chung, khi chúng ta khai báo một biến là my trong một chương trình con, nó sẽ chỉ hoạt động trong chương trình con đó và sẽ không thay đổi giá trị trong chương trình chính. Vì tham số thực tế được tham chiếu ở đây, tức là giá trị trong chương trình chính chứ không phải giá trị sao lưu, nên nó sẽ được thay đổi cho phù hợp.

Cuối cùng, bài viết này về hai phương thức tham chiếu (pass) của tham số trong các chương trình con perl kết thúc tại đây. Nếu bạn muốn biết thêm về hai phương thức tham chiếu (pass) của tham số trong các chương trình con perl, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

29 4 0
qq735679552
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com