Несколько типов данных в объекте perl

Я пытаюсь создать объект в Perl, который содержит массив и два целочисленных скаляра.

Пока у меня есть:

new
{
$class = shift;
$self = [];
$int1 = shift;
$int2 = shift;

bless($self, $class);
}

Это работает для доступа к массиву с помощью $self->[number]

Я хочу иметь доступ к int1 и int2. Если я помещу их вне конструктора, они будут меняться для каждого экземпляра объекта, когда я их изменяю.

Спасибо.


person stuntpenguin007    schedule 12.10.2015    source источник


Ответы (1)


Предполагая, что вы хотите, чтобы ваши целочисленные значения хранились отдельно от массива, вы можете написать

sub new {
    my $class = shift;
    my %self;
    @self{qw/ array int1 int2 /} = ( [], @_ );
    bless \%self, $class;
}

Затем вы можете получить доступ к целочисленным скалярам как $self->{int1} и $self->{int2} и к элементам массива как $self->{array}[0], $self->{array}[1] и т. д. Но я надеюсь, вы понимаете, что вы должны делать это только в коде для модуля, и вы должны написать методы доступа для внешнего программного обеспечения, которое использует модуль

person Borodin    schedule 12.10.2015