Thread Kompilierte Perlklassen (6 answers)
Opened by rosti at 2023-12-04 10:37

rosti
 2023-12-05 18:13
#195620 #195620
User since
2011-03-19
3237 Artikel
BenutzerIn
[Homepage]
user image
Btw., Attribute kann man auch mit native Perl.v5 schreibschützen:

Code (perl): (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
42
43
44
45
46
47
48
49
50
51
package Kreis::Prot;
use strict;
use warnings;
use Carp 'croak';

sub TIESCALAR{
    my $class = shift;
    my $ref = shift;
    bless \$ref, $class;
}

sub FETCH{
    my $self = shift;
    return $$self;
}

sub STORE{
    my $self = shift;
    croak "Das Attribut ist schreibgeschützt!";
}
#########################################
package Kreis;
use strict;
use warnings;

sub new{
    my $class = shift;
    my $self = bless{pi => 3.14}, $class;
    tie $self->{pi}, 'Kreis::Prot', $self->{pi};
    return $self;
}

sub umfang{
    my $self = shift;
    my %gegeben = (
        radius => 0,
        durchm => 0,
    @_);
    return $gegeben{radius} ? 
        2 * $self->{pi} * $gegeben{radius} :
        $self->{pi} * $gegeben{durchm};
}
#########################################
package main;
use strict;
use warnings;

my $k = Kreis->new;
print $k->umfang(radius => 10);
# Versuch ein schreibgeschütztes Attribut zu beschreiben
$k->{pi} = 123; # Fehlermeldung

View full thread Kompilierte Perlklassen