Ich flute das Forum. :)
Erstmal eine Beispielklasse:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use v6;
class test {
has @.x;
method new($r) {
return self.bless(*,:$r)
}
submethod BUILD(:$r) {
@!x.push(^$r.rand);
}
}
my $x = test.new(10);
say $x.x.perl;
Bei dieser möchte ich jetzt, dass mir new nicht nur das Objekt, sondern gleich auch die Länge des enthaltenen Arrays zurückgibt. Hatte grad
Moritz' blog-Eintrag zu den Konstruktoren nochmal gelesen, aber ich versteh nicht, warum ich in dem new-Block @!x nicht benutzen kann, in dem BUILD-Block, der ja eigentlich durch das bless schon davor aufgerufen wird allerdings schon...?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use v6;
class test {
has @.x;
method new($r) {
my $tmp = self.bless(*,:$r);
return $tmp,@!x.elems;
}
submethod BUILD(:$r) {
@!x.push(^$r.rand);
}
}
my ($x,$y) = test.new(10);
say $x.x.perl;
say $y;