gpt4 book ai didi

perl - 如何检查是否使用对象调用方法调用了子例程

转载 作者:行者123 更新时间:2023-12-04 15:40:59 27 4
gpt4 key购买 nike

您可以使用以下示例中的两种语法将子例程作为方法调用。

但是您也可以不将其作为对象来调用。

#====================================================
package Opa;
sub opa{
$first= shift;
$second= shift;
print "Opa $first -- $second\n";
}

package main;
# as object:
Opa->opa("uno");
opa Opa ("uno");
# not as object
Opa::opa("uno","segundo");
Opa::opa("Opa","uno");
#====================================================

它有一种方法,从子程序内部,“一般地”知道子程序收到了什么样的调用?

最佳答案

您可以使用 called_as_method来自 Devel::Caller .

use Devel::Caller qw( called_as_method );
sub opa{
print called_as_method(0) ? 'object: ' : 'class: ';
$first= shift;
$second= shift;
print "Opa $first -- $second\n";
}

输出:
object: Opa Opa -- uno
object: Opa Opa -- uno
class: Opa uno -- segundo
class: Opa Opa -- uno

关于perl - 如何检查是否使用对象调用方法调用了子例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39956702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com