Leser: 1
![]() |
|< 1 2 >| | ![]() |
20 Einträge, 2 Seiten |
$self->counter( $self->counter + 5);
Quote@sid burn Mit deinen Sources kann ich allerdings nur die Anzahl meiner Objekte zählen, welche widerum für mich nicht interessant ist. Ich benötige einen einfachen counter, den ich innerhalb meiner Insatnz beliebig inkrementieren, dekrementieren und ausgeben kann.
Quote@KurtZ Das war jetzt eine Analogie zu Java / C++. Dort kann man int x += 5; schreiben als Kurzform für int x = x + 5;
$self->counter() += 5
1
2
3
$self->counter(5); # setzen
$self->add_counter(4); # 4 dazu addieren
$self->del_counter(3); # 3 wieder abziehen
1
2
3
$self->counter(5); # setzen
$self->counter('+', 4); # 4 dazu addieren
$self->counter('-', 2); # 2 wieder subtrahieren
Struppi+2008-05-07 14:07:58--Das ist durchaus üblich und wenn du Additionen öfters hast, dann schreib eine add() sub.Code (perl): (dl )$self->counter( $self->counter + 5);
KurtZ+2008-05-07 14:22:55--Struppi+2008-05-07 14:07:58--Das ist durchaus üblich und wenn du Additionen öfters hast, dann schreib eine add() sub.Code (perl): (dl )$self->counter( $self->counter + 5);
ACK, hier ist counter() nun ein reiner setter ohne Zusatzlogik, was mir Namenstechnisch auch sauberer erscheint! Eine Zusatzmethode counter_add() oder counter_inc() wird man sich ja bei Bedarf wohl leisten können.
JackBauer+2008-05-07 14:14:35--@KurtZ Das war jetzt eine Analogie zu Java / C++. Dort kann man int x += 5; schreiben als Kurzform für int x = x + 5;
sid burn+2008-05-07 14:24:53--KurtZ+2008-05-07 14:22:55--[ACK, hier ist counter() nun ein reiner setter ohne Zusatzlogik, was mir Namenstechnisch auch sauberer erscheint! Eine Zusatzmethode counter_add() oder counter_inc() wird man sich ja bei Bedarf wohl leisten können.
Nope, es ist auch automatisch ein getter. Sonst würde "$self->counter + 5" ja nicht gehen. $self->counter ohne Argument liefert den aktuellen Stand.
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/perl
use strict;
use warnings;
package Foo;
sub new
{
my $class=shift;
my $self={};
$self->{count}=0;
bless($self,$class);
return $self;
}
sub counter
{
my $self=shift;
if(@_)
{
my $opt=shift;
my $val=@_?shift(@_):undef;
return 0 unless($opt=~/^[+-=]{1,2}|^\d+$/ );
if($opt eq '=')
{
return 0 unless(defined($val));
$self->{count}=$val+0;
}
elsif($opt eq '+=')
{
return 0 unless(defined($val));
$self->{count}+=$val;
}
elsif($opt eq '-=')
{
return 0 unless(defined($val));
$self->{count}-=$val;
}
elsif($opt eq '++')
{ $self->{count}++; }
elsif($opt eq '--')
{ $self->{count}--; }
elsif($opt=~/^\d+$/)
{ $self->{count}=$opt; }
else
{ return 0; }
return 1;
}
else
{ return $self->{count}; }
}
package main;
my $val=Foo->new();
$val->counter( 3 );
print $val->counter."\n";
$val->counter('++');
print $val->counter."\n";
$val->counter('--');
print $val->counter."\n";
$val->counter qw( = 10);
print $val->counter."\n";
$val->counter qw( += 5 );
print $val->counter."\n";
$val->counter qw( -= 20 );
print $val->counter."\n";
![]() |
|< 1 2 >| | ![]() |
20 Einträge, 2 Seiten |