Thread Perl +OOP (26 answers)
Opened by [HR]Doomrunner at 2003-10-01 14:23

Crian
 2003-10-23 13:18
#59458 #59458
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ein Tipp - man sollte nach möglichkeit sowohl in der Klasse als auch von außerhalb nicht direkt auf den Hash zugreifen, sondern Setter / Getter dafür verwenden.

Mit einem Tipp aus Peter Wainwrght et al "professional Perl programming" spart man sich viel Arbeit, wenn man das dann so abkürzt:

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
sub _property ($$;$) {
    my $self   = shift;    # object
    my $attr   = shift;    # attribute to get or set
    my $setter = @_ == 1;  # is this method used as a setter?
    my $value  = shift;    # value for the setter

    # if we use "if (defined $value)" here, we can't set the values
    # to undef! So we have to use this:
    if ($setter) {
        my $old_value = $self->{$attr};
        $self->{$attr} = $value;
        return $old_value;
    }
    else {
        return $self->{$attr};
    }
} # sub _property


sub uhrzeit ($;$) { return shift->_property('uhrzeit', @_) }
sub stunden ($;$) { return shift->_property('stunden', @_) }
sub minuten ($;$) { return shift->_property('minuten', @_) }
sub sekunden($;$) { return shift->_property('sekunden', @_) }
sub datum   ($;$) { return shift->_property('datum', @_) }
sub tag     ($;$) { return shift->_property('tag', @_) }
sub monat   ($;$) { return shift->_property('monat', @_) }
sub jahr    ($;$) { return shift->_property('jahr', @_) }
...


:-)\n\n

<!--EDIT|Crian|1066900877-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Perl +OOP