Schrift
[thread]7533[/thread]

C-style-for gerechtfertigt?



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
pKai
 2005-12-08 14:55
#60798 #60798
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hab ja auch mal C gelernt und in der Anfangszeit meiner Perl[4]-Nutzung for (;;) benutzt.
Nun aber schon jahrelang nicht mehr.
Jetzt muss ich allerdings ein Objekt benutzen, das einen Iterator zur Verfügung stellt, ich muss aber verschieden Funktionen für den ersten Zugriff (GetFirst) und weitere Zugriffe (GetNext) verwenden.
Daher erscheint es mir im Moment am sinnvollsten die Schleife als
Code: (dl )
for (my $Elem = $Sammlung->GetFirst(); $Elem; $Elem = $Sammlung->GetNext()) {....}
aufzusetzen.
Erscheint mir im Moment übersichtlicher als
Code: (dl )
1
2
3
4
5
my $Elem = $Sammlung->GetFirst();
while ($Elem) {
....
$Elem = $Sammlung->GetNext();
}

?!\n\n

<!--EDIT|pKai|1134046664-->
I sense a soul in search of answers.
esskar
 2005-12-08 15:00
#60799 #60799
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn du variablen jetzt noch klein und in english schreiben würdest, wäre ich vollkommen zufrieden ;)
Taulmarill
 2005-12-08 16:27
#60800 #60800
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
stimme mit esskar vollkommen überein.

alternativ könnte man sich aber auch die klasse um die methode GetAll erweitern :D
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
pKai
 2005-12-08 17:55
#60801 #60801
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
@esskar:
Das war Beispielcode. In meinen produktiven Programmen sind neben den Bezeichnern auch die Kommentare Englisch, auch wenn das derzeit nur Deutsch-Muttersprachler lesen.
Welchen Vorteil hat es in Var-Namen keine Großbuchstaben zu verwenden?

@Taulmarill:
Beim Nachdenken über deine Anregung, kam mir, dass es das evtl. sogar schon gib. Mal schauen...
I sense a soul in search of answers.
esskar
 2005-12-08 18:17
#60802 #60802
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=pKai,08.12.2005, 16:55]Welchen Vorteil hat es in Var-Namen keine Großbuchstaben zu verwenden?[/quote]
es sieht gut aus... :-)
steffenw
 2005-12-08 21:43
#60803 #60803
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
package GrossUndSoWeiter; # = Klassenname erster Buchstabe groß und jeder Wortanfang groß
use constant ALLES_GROSS => 'Worte mit _ verbunden';
my $variablen_klein = 'Worte mit _ verbunden';
$obj->methodenName('erstes Wort klein, alle anderen groß; interne Methoden zusätzlich mit führendem _');
sub _nur_intern_im_package_verwendet {q"führender _, sonst klein; normale sub's ohne führende _"}
our $VERSION = 'alles groß';
Ich glaube das war's schon, steht aber auch im Kamelbuch drin, glaube ich jedenfalls, daß ich es dort gelesen habe. Andere Sprachen erzwingen Schreibweisen. Perl ist kulant. Man darf aber das Ganze auch nicht zu sehr übertreiben. Sonst heißt es wieder: Perl ist eine kryptische Sprache. Meist sind es aber Programmierer mit krummen Fingern.

... Ist schon gut, bitte mich nicht schlagen. Ich höre schon auf.\n\n

<!--EDIT|steffenw|1134071323-->
$SIG{USER} = sub {love 'Perl' or die};
J-jayz-Z
 2005-12-08 21:45
#60804 #60804
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
sowas nennt man doch Konvention und nicht Gesetz, oder? :)
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
steffenw
 2005-12-08 22:15
#60805 #60805
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja stimmt @J-jayz-Z, man hat anfangs die Wahl, bis man sich auf etwas eingeschossen hat. Und man sollte sich nicht erst irgendetwas angewöhnen, was nicht unbedingt gängig ist. Das macht es nur anderen schwer, den Code zu verstehen, auch wenn der Complier sehr nachsichtig ist.

Perl erlaubt auch:
use strict;
und
use warnings; # oft führen Typunverträglichkeiten dazu
wegzulassen. Bei anderen Sprachen ist das dauerhaft an und nicht abschaltbar. Und ich sah schon oft, daß man sich die Freiheit nahm, auch bei größeren Projekten.
$SIG{USER} = sub {love 'Perl' or die};
steffenw
 2005-12-08 22:25
#60806 #60806
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Es geht auch ohne for und while:
Code (perl): (dl )
1
2
3
4
5
if (my $Elem = $Sammlung->GetFirst) {
  { ...
    $Elem = $Sammlung->GetNext() and redo;
  }
}
\n\n

<!--EDIT|steffenw|1134073617-->
$SIG{USER} = sub {love 'Perl' or die};
ptk
 2005-12-09 00:07
#60807 #60807
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
CPAN:Object::Iterate hat eine schöne Syntax.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2005-12-08 14:55.