Perl中不带self参数的调用方法
Call method without self parameter in Perl
我想知道是否可以在不传递 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)
有什么办法吗(即使这不是最佳实践或使用一些 "arcane"
语言的特性)以仅使用引用来调用 test
方法
$obj
没有隐式传递 "self" 参数。
总而言之,是否可以这样做:
$objXXXXtest("str");
使用 XXXX
假设构造并得到 called(str)
作为输出?
您可以直接调用该函数,而不是作为对象的方法:
myPackage::test("str");
有点不正统,但是 UNIVERSAL::can
returns 一个代码引用,您可以在没有引用的情况下调用它。
$obj->can("test")->("str");
我想知道是否可以在不传递 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)
有什么办法吗(即使这不是最佳实践或使用一些 "arcane"
语言的特性)以仅使用引用来调用 test
方法
$obj
没有隐式传递 "self" 参数。
总而言之,是否可以这样做:
$objXXXXtest("str");
使用 XXXX
假设构造并得到 called(str)
作为输出?
您可以直接调用该函数,而不是作为对象的方法:
myPackage::test("str");
有点不正统,但是 UNIVERSAL::can
returns 一个代码引用,您可以在没有引用的情况下调用它。
$obj->can("test")->("str");