gpt4 book ai didi

perl - Perl中没有self参数的调用方法

转载 作者:行者123 更新时间:2023-12-01 09:13:25 27 4
gpt4 key购买 nike

我想知道是否可以在不传递 self 参数的情况下从对象调用方法。

例如,我有一个包:

package MyPackage;

sub new {
my $class = shift;
return bless {}, $class;
}

sub test {
print("called(" . join(', ', @_) . ")\n");
}

从脚本中,我调用构造函数,然后调用 test 方法:

my $obj = MyPackage->new();
$obj->test("str");

给我以下输出:

called(MyPackage=HASH(0x55b05d481f48), str)

有什么办法(即使这不是最佳做法或使用一些“奥术”语言的特性)来调用 test 方法只使用引用$obj 没有隐式传递“self”参数。

总之,有没有可能做这样的事情:

$objXXXXtest("str");

使用 XXXX 假设构造并获得 call(str) 作为输出?

最佳答案

有点不正统,但是UNIVERSAL::can返回一个代码引用,您可以在没有引用的情况下调用它。

$obj->can("test")->("str");

关于perl - Perl中没有self参数的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027313/

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