加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 为什么我不能初始化new里面的成员变量?

发布时间:2020-12-16 06:06:16 所属栏目:大数据 来源:网络整理
导读:我试图在Perl中找不到OO.我做了以下琐碎课: #/usr/bin/perl package Tools::Util; use strict; use warnings; my $var; sub new { my ($class,$arg) = @_; my $small_class = { var = $arg,}; return bless $small_class; } sub print_object { print "var
我试图在Perl中找不到OO.我做了以下琐碎课:

#/usr/bin/perl  
package Tools::Util;  
use strict;  
use warnings;  

my $var;  

sub new {  
    my ($class,$arg) = @_;   
    my $small_class = {  
        var => $arg,};  
    return bless $small_class;    
}  

sub print_object {  
    print "var = $varn";  #this is line 20   
}  

1;

这是一个测试脚本:

#!/usr/bin/perl  
use strict;  
use warnings;  
use Tools::Util;  

my $test_object = new Tools::Util("Some sentence");  
$test_object->print_object();  
use Data::Dumper;  
print Dumper($test_object);

我得到的结果是:

Use of uninitialized value $var in concatenation (.) or string at Tools/Util.pm line 20.   
var =   
$VAR1 = bless( {  
                 'var' => 'Some sentence'   
               },'Tools::Util' );

我不明白这.我认为Perl中的对象是哈希值,因此我可以使用相同的名称访问/初始化成员变量而不使用$.为什么在这种情况下$var没有初始化但是我转储的哈希包含值?
我应该如何使用/初始化/处理成员变量以及我在这里误解了什么?

解决方法

$var是词法类变量,在您的示例中未定义.

你可能想要:

sub print_object {  
    my $self = shift;
    print "var = $self->{var}n";
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读