方法调用不提供标量上下文......看起来很奇怪

时间:2014-09-24 06:50:28

标签: perl

此行为不是Math :: BigInt特定的,但以下代码在最后一行中断。

use strict;
use warnings;
use Math::BigInt;

my $a = Math::BigInt->bone;
my $b = Math::BigInt->bone;

print ($a+$b)->bfac;

但是,此代码可以正常工作:

use strict;
use warnings;
use Math::BigInt;

my $a = Math::BigInt->bone;
my $b = Math::BigInt->bone;

print scalar($a+$b)->bfac;

我的问题是这个......为什么标题上下文不是自动强加于左边的“ - >”参数? AFAIK,“ - >”仅适用于标量和(特殊)类型的颜色。

2 个答案:

答案 0 :(得分:10)

你还需要一套parens,

print (($a+$b)->bfac);

因为您的代码被解释为,

(print ($a+$b))->bfac;

并且警告也为您提供了print (...) interpreted as function ..

答案 1 :(得分:7)

需要+,因此不会将其解释为print的参数。

print +($a+$b)->bfac;