Schrift
[thread]5786[/thread]

Perl +OOP (Seite 3)

Tags: Ähnliche Threads

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
pq
 2003-10-23 14:14
#59461 #59461
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Strat,23.10.2003, 11:55]wuerde ich schreiben als:
Code: (dl )
1
2
3
4
5
6
sub new {
 my $class = shift;
 my $referenz = {};
 bless($referenz,$class);
 return($referenz);
}

denn der erste Parameter ist die Klasse (genauer gesagt: das Package), und das Objekt wird erst durch bless erzeugt
[/quote]
der erste parameter kann durchaus ein objekt sein! (dann würde man aber
nicht bless() damit aufrufen, sondern erst ref()). klassisch ist das hier:
Code: (dl )
1
2
3
4
5
6
sub new {
 my $proto = shift;
 my $class = ref $proto || $proto;
 my $referenz = {};
 bless($referenz,$class); # das return kann hier auch wegbleiben
}
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Relais
 2003-10-23 14:46
#59462 #59462
User since
2003-08-06
2257 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Geewiz,01.10.2003, 22:22]Wo nichts übersetzt wird, schleichen sich auch keine Übersetzungsprobleme ein. Man sollte Bücher wo immer möglich im Original lesen. Conway auf Englisch, Shakespeare auf Klingonisch.[/quote]
Du meinst Conway auf australisch und die Bibel auf Hebräisch?
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
Crian
 2003-10-23 15:55
#59463 #59463
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ja ich weiß inzwischen auch, dass die Prototypen nichts bringen, aber sie stören ja auch nicht. Betrachte sie doch einfach als Dokumentation :-D
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
Strat
 2003-10-23 20:04
#59464 #59464
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zu Prototypen: Manche Leute verwenden bei OOP komische Prototypen, um so mehr oder weniger erfolgreich zu verhindern, dass eine Methode als Funktion aufgerufen werden kann. aber dies scheint hier eher nicht der Fall zu sein

@pq: stimmt; jedoch wenn ich einen Clone-Konstruktor verwende, heisst der bei mir irgendwie nie ->new, sondern ->clone oder so. Einen Konstruktor, der auf beide Sachen reagiert, habe ich irgendwie noch nie gebraucht. Hoechstens mal in Phasen von Gemeinheit sowas reingeschrieben wie:
ref ($class) or die "Don't use this constructor for cloning!!!";
oder so
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Relais
 2003-10-24 03:38
#59465 #59465
User since
2003-08-06
2257 Artikel
ModeratorIn
[Homepage] [default_avatar]
...drum schreibt man, wenn man sich diese Belehrung sparen möchte auch gerne:
Code: (dl )
1
2
3
4
5
6
sub new {
my $cargo = shift;
my $class = ref $cargo || $cargo;
my $self = { @_ }; # etwas dümmlich ungeprüfte Übernahme von Parametern.
bless( $self, $class);
}
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
Strat
 2003-10-24 22:14
#59466 #59466
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich kenne es als
Code: (dl )
1
2
3
4
5
6
sub new {
my $cult = shift;
my $cargo = ref $cult || $cult;
my $self = {};
bless( $self, $cargo);
}
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Relais
 2003-10-24 22:27
#59467 #59467
User since
2003-08-06
2257 Artikel
ModeratorIn
[Homepage] [default_avatar]
oder so. Ich kenne es aus der mündlichen Überlieferung, und die variiert 8)
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2003-10-01 14:23.