Обмен данными между различными объектами Perl - PullRequest
1 голос
/ 04 ноября 2011

Если у меня есть член данных, скажите «dt» в классе perl (Myclass).Я создал два объекта класса: «obj1» и «obj2».Я установил «dt», используя obj1 как «2».Если я получаю доступ к «dt» через «obj2», я должен получить значение «dt» как 2.

 use Myclass;

 my $obj1 = new Myclass;
 my $obj2 = new Myclass;

 $obj1->{dt} = 2;

 print $obj2->{dt}; // This should print "2"

Как реализовать класс для достижения этого ??

1 Ответ

1 голос
/ 04 ноября 2011

Используйте ключевое слово our, которое будет иметь область действия пакета:

package Myclass;

use strict;
use warnings;

our $dt;

sub new {
    my $class = shift;
    my $self = {};
    bless $self, $class
}

sub dt { # Implement getter/setter

    shift;              # Pulls object off @_ (ignores calling class)
    $dt = shift if @_;  # If argument provided, sets 'dt' to it
    return $dt;         # In both cases (getter/setter), returns current $dt
}

1;

А потом:

use strict;
use warnings;
use feature 'say';
use Myclass;


my $obj1 = Myclass->new;
my $obj2 = Myclass->new;

$obj1->dt( 2 );  # Set to 2 via $obj1

say $obj2->dt;   # '2'

$obj2->dt( 5 );  # Set to 5 via $obj2

say $obj1->dt;   # '5'
...