Thread Counter innerhalb einer Klasse? (3 answers)
Opened by JackBauer at 2008-05-07 14:45

sid burn
 2008-05-07 14:56
#109352 #109352
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich würde es so machen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{
package Class;
use strict;
use warnings;
use Scalar::Util qw(weaken);
my @objects;

sub new {
my ( $class ) = @_;

# Objekt erstellen
my $self = bless {}, $class;

# zum array hinzufügen
push @objects, $self;
# Wert weaken
weaken( $objects[-1] );

# Object zurück geben
return $self;
}

sub count {
my ( $self ) = @_;
return scalar @objects;
}
}

printf "Anzahl: %d\n", Class::count;

my $new1 = Class->new;
my $new2 = Class->new;

printf "Anzahl: %d\n", $new1->count;

{
my $new3 = Class->new;
printf "Anzahl: %d\n", $new3->count;
}

printf "Anzahl: %d\n", $new1->count;


Den Counter kannst du so nicht manuel setzen und somit kann keine Fehlerhafte anzahl entstehen. Und es ist von ausen aus nicht manipulierbar. "Updated" sich selber. Du benötigst halt keine DESTROY Methode wo du den Counter decrementieren musst. Die Klasse enthält referenzen zu allen Objekten. Kannst also auch über eine Methode oder Klassenmethode über alle Objekte iterieren du du derzeit besitzt.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Antworten mit Zitat

View full thread Counter innerhalb einer Klasse?