当前位置:  开发笔记 > 编程语言 > 正文

我如何使用Class :: ArrayObjects?

如何解决《我如何使用Class::ArrayObjects?》经验,为你挑选了1个好方法。

我写了一个使用Class :: ArrayObjects的简单程序,但它没有按照我的预期工作.该计划是:

TestArrayObject.pm:

package TestArrayObject;
use Class::ArrayObjects define => { 
                       fields  => [qw(name id address)], 
                   };

sub new {
    my ($class) = @_;
    my $self = [];
    bless $self, $class;
    $self->[name] = '';
    $self->[id] = '';
    $self->[address] = '';
    return $self;
}
1;

Test.pl

use TestArrayObject;
use Data::Dumper;

my $test = new TestArrayObject;
$test->[name] = 'Minh';
$test->[id] = '123456';
$test->[address] = 'HN';
print Dumper $test;

当我运行Test.pl时,输出数据是:

$VAR1 = bless( [
             'HN',
             '',
             ''
           ], 'TestArrayObject' );

我想知道'name'和'id'的数据在哪里?

谢谢,明.



1> innaM..:

一直use strict.尝试尽可能多地使用use warnings.

由于use strict您的测试脚本甚至无法运行,Perl将发出以下错误消息:

Bareword "name" not allowed while "strict subs" in use at test.pl line 8.
Bareword "id" not allowed while "strict subs" in use at test.pl line 9.
Bareword "address" not allowed while "strict subs" in use at test.pl line 10.
Execution of test.pl aborted due to compilation errors.

这是因为数组索引的名称仅对TestArrayObject模块可见,但对测试脚本不可见.

为了使您的类面向对象,我建议您为变量实现访问器,例如get_name/set_name,并使用类模块外部的访问器.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有