不明确的调用解析为 CORE::join(),符合条件或使用 & 在
Ambiguous call resolved as CORE::join(), qualify as such or use & at
我遇到错误:
Ambiguous call resolved as CORE::join(), qualify as such or use & at
当我修复错误时:
$args = CORE::join( ', ', @$args );
一切正常。
但是当我将其修复为:
$args = &join( ', ', @$args );
根据错误消息的提示,我得到了不同的错误:
Can't locate object method "_make_instance" via package ", " (perhaps you forgot to load ", "?) at
为什么第二次修复不起作用?
您收到该警告是因为您定义了一个名为 join
的子例程。现在 Perl 不确定 join( ', ', @$args )
是应该调用内置函数还是你的子例程。
CORE::join
明确调用内置 join
.
&join(...)
明确调用您的子例程(并覆盖它可能具有的任何原型)。至于为什么你的子程序会抛出关于名为 ,
和 _make_instance
的包的奇怪错误,如果你不向我们展示代码,我们无法回答。
您收到错误是因为您有一个名为 join 的子项,所以您需要消除它的歧义。要使其调用内置函数,请在前面添加 CORE::
。要使其调用 sub,请在前面添加 &
。
错误是因为您正在调用子程序并且它实际上是一个需要对象或class作为第一个参数的方法,这将隐式发生当您使用方法调用语法时。
我遇到错误:
Ambiguous call resolved as CORE::join(), qualify as such or use & at
当我修复错误时:
$args = CORE::join( ', ', @$args );
一切正常。
但是当我将其修复为:
$args = &join( ', ', @$args );
根据错误消息的提示,我得到了不同的错误:
Can't locate object method "_make_instance" via package ", " (perhaps you forgot to load ", "?) at
为什么第二次修复不起作用?
您收到该警告是因为您定义了一个名为 join
的子例程。现在 Perl 不确定 join( ', ', @$args )
是应该调用内置函数还是你的子例程。
CORE::join
明确调用内置 join
.
&join(...)
明确调用您的子例程(并覆盖它可能具有的任何原型)。至于为什么你的子程序会抛出关于名为 ,
和 _make_instance
的包的奇怪错误,如果你不向我们展示代码,我们无法回答。
您收到错误是因为您有一个名为 join 的子项,所以您需要消除它的歧义。要使其调用内置函数,请在前面添加 CORE::
。要使其调用 sub,请在前面添加 &
。
错误是因为您正在调用子程序并且它实际上是一个需要对象或class作为第一个参数的方法,这将隐式发生当您使用方法调用语法时。