1 2 3 4 5 6 7 8 9 10
class wuerfel{ has $.augen is rw; method anschubsen{ $.augen = (20.rand+0.5).round; } } my $drachentoeter = wuerfel.new; $drachentoeter.anschubsen; say $drachentoeter.augen;
method new{return self.bless(*)}
2011-03-17T10:24:05 Sven_123allerdings hab ich, ausgehend von der Version im Perl6-Tutorial, etwas basteln müssen und ich kann nicht ganz nachvollziehen, warum.
QuoteUrsprünglich hatte ich es mit einem bloßen has $.augen; versucht, und das twigil . in Anschubsen weggelassen, also $augen = (20.rand+0.5).round;
QuoteAttributes are declared with the has key word, and have a "twigil", that is a special character after the sigil. For private attributes that's a bang !, for public attributes it's the dot .. Public attributes are just private attributes with a public accessor. So if you want to modify the attribute, you need to use the ! sigil to access the actual attribute, and not the accessor (unless the accessor is marked is rw).
QuoteWas genau passiert beim Aufrufen des Konstruktors?
QuoteIst es also generell so, dass Twigils mitgeführt werden müssen?
2011-03-17T10:24:05 Sven_123Zum Einstieg wollte ich einen kleinen Würfel erschaffen:
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10class wuerfel{ has $.augen is rw; method anschubsen{ $.augen = (20.rand+0.5).round; } } my $drachentoeter = wuerfel.new; $drachentoeter.anschubsen; say $drachentoeter.augen;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/env python # coding: iso-8859-1 import random class Wuerfel: def __init__(self): self.augen = None def anschubsen(self): self.augen = random.randrange(20) + 1 drachentoeter = Wuerfel() drachentoeter.anschubsen() print drachentoeter.augen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl use warnings; use strict; package Wuerfel; sub new { my $classname = shift; my $self = {augen => undef}; return bless($self, $classname); } sub anschubsen { my $self = shift; $self->{augen} = int(rand(20)) + 1; } package main; my $drachentoeter = Wuerfel->new(); $drachentoeter->anschubsen(); print "$drachentoeter->{augen}\n";