在Perl中,每個子接受一個標量列表,並返回一個標量列表。在C-ISH而言,這可以寫成
SV** some_sub(SV** args);
凡SV*
是一個標量變量的類型。
有一些方法可以限制參數:例如使用Method::Signatures
的語法糖或原型(請請勿使用原型)。
名單分配my ($a, $b, $c, $d, $e) = @_;
工作陣列@_
的大小無關。如果RHS(右側)具有較少的LHS元素,則左側的標量爲undef
。例如。
sub foo {
my ($x, $y, $z) = @_;
say "x is ", $x // "undef";
say "y is ", $y // "undef";
say "z is ", $z // "undef";
}
say "foo(1)";
foo(1);
say "foo(1, 2, 3)";
foo(1, 2, 3);
say "foo(1 .. 10_000)";
foo(1 .. 10_000); # ten thousand arguments!
輸出:
foo(1)
x is 1
y is undef
z is undef
foo(1, 2, 3)
x is 1
y is 2
z is 3
foo(1 .. 10_000)
x is 1
y is 2
z is 3
'$ a'和'$ b'保留給'sort'。你不應該使用這兩個名字,因爲它們可能會發生衝突。 – simbabque
@simbabque:名稱是一個例子,但很高興知道! – Jim