Schrift
[thread]6307[/thread]

perl variablen leer ?: to initiier or not to initiier ? (Seite 2)

Leser: 1


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
sri
 2004-06-04 16:08
#82956 #82956
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Crian,04.06.2004, 13:09][quote=sri,02.06.2004, 20:49]Probier es doch einfach aus!!! *slap*[/quote]
Bei Perl mag das die geeignete Methode sein, bei C++ habe ich gelernt, mich nicht auf die Verhaltensweise meines Compilers zu stützen, sondern lieber nachzufragen, was der Standard dazu sagt.
Bei C/C++ machen es manche Compiler so manche anders, bei einigen kann man einstellen, ob und wenn ja was in den Speicherbereich uninitialisierter Variablen geschrieben werden soll. Das kann zum Debuggen sehr nützlich sein, weil man dann, wenn man auf das entsprechende Muster trifft, ziemlich sicher davon ausgehen kann, dass da eine Variable nicht initialisiert wurde.

Aber natürlich hätte der OP trotzdem selbst probieren und berichten können, wie es sich bei ihm verhält und fragen, ob das gesichert ist, dass es immer so ist.

Also *slap* ruhig =)

P.S. Von mir ein *slap* für die Verwendung von "lehr" für "leer" ... hat man Dich denn nichts gelehrt? ;-)[/quote]
Damit hast du natürlich Recht.

P.S. *autsch*
esskar
 2004-06-04 16:38
#82957 #82957
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich initialisiere immer; egal in welcher sprache
dadurch ist man immer auf der sicheren seite und später kann man nicht sagen: och, ich habs nicht gewusst!
ptk
 2004-06-04 16:46
#82958 #82958
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei Perl braucht man nicht zu initialisieren, und in zukuenftigen Versionen wird man auch keine Ueberraschungen erleben. Ganz im Gegenteil: erst kuerzlich wurde
Code: (dl )
my @a = ();
und aehnliches so gepatcht, so dass die Zuweisung intern nicht explizit durchgefuehrt wird und somit weniger performant als noetig war.
renee
 2004-06-04 16:49
#82959 #82959
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@crian: ist die überschrift jetzt besser??

man sollte sich das meiner Meinung nach auch angewöhnen, die Variablen zu initialisieren, dann fällt es einem auch leichter, mal schnell was in einer anderen Sprache zu programmieren. Ist vielleicht beim Schreiben etwas mehr zeitaufwändig (sowieso nur marginal), aber das spart man bei Fehlersuche vielfach wieder ein...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Relais
 2004-06-04 17:33
#82960 #82960
User since
2003-08-06
2261 Artikel
ModeratorIn
[Homepage] [default_avatar]
Au backe, gut, daß ich nicht eher in diesen Thread geguckt habe.

Bleibt zu bemerken, daß, wenn man anders als pktm es vorschlägt und nicht gerade Wert darauf legt, was in $var drin ist, solange es nur irrelevant für das Programm sein darf, Testen auf Wahr oder Fachls reicht. Auf eq "" (Leerstring), auf == 0 oder auf not defined ist dann egal, Perl macht draus, was zumeist gemeint ist, wenn man anfangs nur
my $var;
gesetzt hat. Das funktioniert also so lange, wie man mit perl einer Meinung ist, $var sei immer ein Wahrer wert im Programmablauf. Erst, wenn es auch 0, "" oder undef enthalten darf/kann/sollte, brauchts den Denkprozess anzwerfen und in eine oder mehrere der Kategorien einzusteigen.

Ein freundliches "Blah" euch allen.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
ptk
 2004-06-04 18:05
#82961 #82961
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=renee,04.06.2004, 14:49]man sollte sich das meiner Meinung nach auch angewöhnen, die Variablen zu initialisieren, dann fällt es einem auch leichter, mal schnell was in einer anderen Sprache zu programmieren. Ist vielleicht beim Schreiben etwas mehr zeitaufwändig (sowieso nur marginal), aber das spart man bei Fehlersuche vielfach wieder ein...[/quote]
Dem kann ich gar nicht zustimmen. Soll man auf all die Errungenschaften von Perl verzichten, nur weil man in einer anderen, erheblich ausdrucksschwaecheren Sprache auch programmieren muss?

Der einzige Grund fuer das redundante Initialisieren, der mir gerade einfaellt, ist, wenn man in einem Block nur teilweise Variablen initialisiert und einen einheitlichen Stil beibehalten will. Also:
Code: (dl )
1
2
3
4
    my $foo = 42;
my $bar = undef;
my @xyz = ();
my @bla = (1,2,3);


Aehnlich mache ich es manchmal bei Importlisten, auch wenn das Modul eigentlich gar nichts exportiert:
Code: (dl )
1
2
use CGI        qw();
use File::Copy qw(copy);
Crian
 2004-06-04 18:41
#82962 #82962
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=sri,04.06.2004, 14:08]P.S. *autsch*[/quote]
Ich hab Dich doch gar nicht gemeint, sondern den Threadersteller... ;-)

@Renee ja viel besser ... hatte ich auch schon überlegt, aber ich dachte, vielleicht meldet er sich ja nochmal.
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
 2004-06-05 04:16
#82963 #82963
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich tendiere dazu, lexikalische variablen erst dann zu deklarieren (und gleich zu initialisieren), wenn ich sie brauche. undef kann manchmal ziemlich laestig sein...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
[E|B]
 2004-06-05 14:38
#82964 #82964
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ui, wer hat den den Reschtschreibrehler in der Überschrift korrigiert?
War das pq? :D (Greetz to pq)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
renee
 2004-06-05 15:34
#82965 #82965
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@[E|B]: nee, meine Wenigkeit konnte Crian nicht so leiden sehen *g*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2004-06-02 22:39.