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

Gre*_*bet 8 perl

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

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

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

print ($a+$b)->bfac;
Run Code Online (Sandbox Code Playgroud)

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

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

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

print scalar($a+$b)->bfac;
Run Code Online (Sandbox Code Playgroud)

我的问题是这个......为什么标题上下文不是自动强加在左边的" - >"参数上?AFAIK," - >"仅适用于标量和(在格式上)类型上的标量.

Сух*_*й27 10

你还需要一套parens,

print (($a+$b)->bfac);
Run Code Online (Sandbox Code Playgroud)

因为你的代码被解释为,

(print ($a+$b))->bfac;
Run Code Online (Sandbox Code Playgroud)

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


Mil*_*ler 7

需要一个,+所以它不被解释为参数print.

print +($a+$b)->bfac;
Run Code Online (Sandbox Code Playgroud)