Thread method new Attribute zurückgeben lassen (0 answers)
Opened by Sven_123 at 2012-11-07 17:15

Sven_123
 2012-11-07 17:15
#163127 #163127
User since
2010-06-01
120 Artikel
BenutzerIn
[default_avatar]
Ich flute das Forum. :)

Erstmal eine Beispielklasse:
Code (perl): (dl )
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...?
Code (perl): (dl )
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;

View full thread method new Attribute zurückgeben lassen