Trong mã của tôi, tôi đã sử dụng phương pháp tương đối nguyên thủy của các thông số khai thác từ một cuộc gọi chức năng như sau:Làm thế nào để bạn nhận được nhiều đối số trong các hàm Perl?
sub addSix ($$$$$$) {
my ($a, $b, $c, $d, $e, $f) = (shift, shift, shift, shift, shift, shift);
return $a + $b + $c + $d + $e + $f;
}
print addSix (1, 2, 3, 4, 5, 6) . "\n";
(quên mã nguyên thủy, các bit nổi bật là nhiều shift
cuộc gọi).
Bây giờ có vẻ khá lộn xộn với tôi và tôi mặc dù Perl có thể có cái gì đó như:
my ($a, $b, $c, $d, $e, $f) = shift (6);
hoặc một cái gì đó tương tự.
Nhưng tôi không thể tìm thấy bất cứ điều gì như thế. Tôi biết tôi có thể sử dụng mảng cho điều này nhưng tôi nghĩ rằng tôi vẫn sẽ phải giải nén các mảng thành vô hướng cá nhân. Điều đó sẽ không quá tệ đối với trường hợp ví dụ trên, trong đó sáu thông số giống nhau, nhưng tôi quan tâm hơn đến trường hợp chúng không thực sự phù hợp như một mảng.
Làm cách nào để bạn có thể trích xuất các tham số mà không kết thúc bằng một số từ khóa shift
?
Lưu ý: Tránh sử dụng '$ a' và' $ b' như tên biến khi chúng được dự định sẽ được sử dụng bên trong 'chỉ khối sort'. – Zaid
@ Zaid, đó là _sample_ mã, tôi thực sự đặt tên biến thực của tôi một chút ngắn gọn hơn :-) – paxdiablo
rõ ràng không phải cho một ví dụ thêm, nhưng đối với một chương trình con thực mà phải mất nhiều hơn một số đối số, nó có thể là tốt nhất để bắt đầu sử dụng các tham số có tên: 'my% params = @_;' và gọi nó là 'mysub foo => 1, bar => 2, baz => 3, ...' –