Schrift
[thread]7181[/thread]

Konstruktor (Seite 2)



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Ronnie
 2005-08-02 13:58
#56924 #56924
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
@[E|B]: Perl ist keine kontextfreie Sprache, weshalb auch keine BNF-Syntax möglich ist und weshalb Perl bei bestimmten Konstrukten rät, was damit gemeint sein soll.
Crian
 2005-08-02 14:25
#56925 #56925
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Taulmarill,02.08.2005, 11:22]wobei die sache mit dem ref depreciated ist[/quote]
Seit wann ist das deprecated? Das ist doch dafür da, auch von einem Objekt der Klasse mit new ein neues Objekt erzeugen zu können. Wobei ich das allerdings noch nicht wirklich gebraucht habe. Aber wenn man mal annimmt, man hat ein Objekt, von dem man nicht genau weiß, von welcher Klasse es ist (vielleicht weiß man nur, dass es mindestens von der und der Klasse ist), dann kann das ganz praktisch sein.
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
pq
 2005-08-02 14:30
#56926 #56926
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
das ist nicht deprecated.
es ist allerdings unschön, dass das viele als default-konstruktor so
verwenden.
wenn du keinen clone-konstruktor brauchst (und den braucht man in den
seltensten fällen), solltest du keine logik dafür einbauen.
falls du aber einen clone-kostruktor brauchst, sehe ich keine anderen
möglichkeit als das (ref $class) || $class (außer einen extra-konstruktor)
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
Taulmarill
 2005-08-02 14:52
#56927 #56927
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
eben, wenn man klonen muss, sollte man das mit $obj->clone benutzen. vergleiche How do I make a constructor?. ausserdem kann man ja immer noch my $newobj = ref($obj)->new; machen, wenn man wirklich ein neues objekt einer klasse will die man nicht mit namen kennt.

allerdings gilt hier natürlich auch wieder, wenn man genau weiss was man tut und dieser lösungsansatz wirklich der beste ist, hält euch natürlich niemand auf. schön finde ich das allerdings nicht.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2005-08-02 15:08
#56928 #56928
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Taulmarill,02.08.2005, 12:52]ausserdem kann man ja immer noch my $newobj = ref($obj)->new; machen, wenn man wirklich ein neues objekt einer klasse will die man nicht mit namen kennt.[/quote]
Oh stimmt. Ich glaub dann bau ich auch keine refs mehr ein.
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
 2005-08-02 17:44
#56929 #56929
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
der unterschied? was passiert bei:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use warnings;
use strict;
use Tk;
sub MainWindow {
 print "Hallo Mainwindow\n";
}
sub new {
 print "new\n";
}
my $mw = new MainWindow();
MainLoop();
\n\n

<!--EDIT|Strat|1122990329-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
steffenw
 2005-08-03 10:55
#56930 #56930
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
... aha, jetzt weiß ich's auch.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use warnings;
use strict;
sub s1 {
 print "s1\n";
 return "r1";
}
sub s2 {
 print "s2\n";
 return "r2";
}
sub new {
 print "new\n";
 print map "$_\n", @_;
}
my $mw = new s1(), s2();

Ausgabe ist:
s1
s2
new
r1
r2\n\n

<!--EDIT|steffenw|1123054733-->
$SIG{USER} = sub {love 'Perl' or die};
esskar
 2005-08-03 11:27
#56931 #56931
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Lüge!
steffenw
 2005-08-03 11:40
#56932 #56932
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
... ja stimmt, war gelogen, hatte die letzte Zeile nicht mit kopiert.
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2005-08-02 12:16.