子程序没有返回正确的整数
Subroutine not returning correct integer
我正在将数据传递给子例程,但子例程未return输入正确的值。
test(5);
sub test {
my $t = @_;
return $t;
}
它应该 return 5
但 return 正在 2
。我正在使用 Mojolicious,但我假设这不会有什么不同,因为它只是一个函数?
my $t = @_
在 标量上下文 中计算数组 @_
,因此将 $t
设置为 @_
的大小。
If you evaluate an array in scalar context, it returns the length of the array.
当您调用 test(5)
时,@_
仅包含 (5)
,因此其长度为 1。使用 Mojolicious,您可能正在使用 方法调用 也将包名称或对象引用作为子例程的附加参数传递,因此您的数组的大小将是 2
而不是您描述的 1
。
如果您想检索数组的内容,请使用
my ($t) = @_;
如果你正在编写一个方法,它应该是
my $self = shift;
my ($t) = @_;
但这取决于子程序的调用方式。
我正在将数据传递给子例程,但子例程未return输入正确的值。
test(5);
sub test {
my $t = @_;
return $t;
}
它应该 return 5
但 return 正在 2
。我正在使用 Mojolicious,但我假设这不会有什么不同,因为它只是一个函数?
my $t = @_
在 标量上下文 中计算数组 @_
,因此将 $t
设置为 @_
的大小。
If you evaluate an array in scalar context, it returns the length of the array.
当您调用 test(5)
时,@_
仅包含 (5)
,因此其长度为 1。使用 Mojolicious,您可能正在使用 方法调用 也将包名称或对象引用作为子例程的附加参数传递,因此您的数组的大小将是 2
而不是您描述的 1
。
如果您想检索数组的内容,请使用
my ($t) = @_;
如果你正在编写一个方法,它应该是
my $self = shift;
my ($t) = @_;
但这取决于子程序的调用方式。