为什么我们不能在perl中通过object with::访问该方法
我编写了为什么我们不能在perl中通过object with::访问该方法,perl,class,object,Perl,Class,Object,我编写了Perl模块,因为我使用了类和对象。 因此,我为类创建对象并访问其方法。 例如: { package sample; sub Bless { my $Class = shift; my $Name = shift; bless \$Name, $Class; } } { package test; our @ISA = qw(sample); sub Print {
Perl模块
,因为我使用了类和对象
。
因此,我为类创建对象并访问其方法。
例如:
{
package sample;
sub Bless
{
my $Class = shift;
my $Name = shift;
bless \$Name, $Class;
}
}
{
package test;
our @ISA = qw(sample);
sub Print
{
my $Name = shift;
print "Hi, I'm $$Name & This is for testing\n";
}
}
my $My_Obj = test->Bless('Ganapathy');
$My_Obj->Print;
对于上述语句,程序已正常运行。
当我执行它时,它会给出这样的输出
Hi, I'm Ganapathy & This is for testing
$My_Obj::Print;
但是如果我像这样使用带有:
的对象访问该方法
Hi, I'm Ganapathy & This is for testing
$My_Obj::Print;
它没有工作,它抛出如下错误
Useless use of a variable in void context at /home/ganapathy/trainee_2015/perl/inter_perl/chap_13/Object_Doubt.pl line 46.
Name "My_Obj::Print" used only once: possible typo at /home/ganapathy/trainee_2015/perl/inter_perl/chap_13/Object_Doubt.pl line 46.
为什么我不能这样访问,请任何人帮助我。
谢谢。在
$My_Obj::Print
中,您要求从包My_Obj
中获取标量变量Print
你没有给它赋值或使用它的值,所以基本上你只是提到了一个标量变量的名称,你得到了这个消息
在void上下文中无用地使用变量
你想做什么
$My_Obj
显然是一个对象,您已经成功地使用$My_Obj->Print
调用了它的Print
方法。为什么要以不同的方式执行此操作?在$My_Obj::Print
中,您要求从包My_Obj
中获取标量变量Print
你没有给它赋值或使用它的值,所以基本上你只是提到了一个标量变量的名称,你得到了这个消息
在void上下文中无用地使用变量
你想做什么$My_Obj
显然是一个对象,您已经成功地使用$My_Obj->Print
调用了它的Print
方法。你为什么想用另一种方式做这件事?@ganathy:它正在起作用<代码>->和:
是非常不同的东西,不能互换。@Ganapathy:它正在工作<代码>->和:
是非常不同的东西,不能互换。