此行为不是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,“->”仅适用于标量和(特殊情况下)适用于typeglob。

最佳答案

您需要另外一套paren,

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

正如您的代码被解释为
(print ($a+$b))->bfac;

和警告也给了你print (...) interpreted as function ..

关于perl - 方法调用不提供标量上下文...似乎很奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26010370/

10-16 17:43