Thread perl 6 diskussion: irgendwer gesteigertes interesse? (123 answers)
Opened by lichtkind at 2006-03-27 00:02

lichtkind
 2006-03-29 20:04
#89783 #89783
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
:= wurde gewählt weil es andere sprachen auch so machen und die perl6 leuten das neulernen der sprache einfach machen wollen

ladys and gents perl 6 flow control basics:

shampoo und conditioner, brauch ich in meinem zimmer .... ja es gibt ein if und das gute daran das man nicht mehr überall leerzeichen einfügen kann wie zb zw hashvariable und {keyname} kann man sich jetzt die runden klammern sparen:

if $level > 59 {say "... und das leben beginnt" }
elsif $level > 40 { say "naja es wird interessant" }
else { say "farmen ist öde"}

das geht natürlich andersrum

unless $level < 60 { say "... und das leben beginnt" }
elsif $level > 40 { say "naja es wird interessant" }
else { say "farmen ist öde" }

da es endlich eine case anweisung gibt geht auch auch

given $level {
when 60 { laber.. }
when $_>40 { laber.. }
default { laber.. }
}

natürlich ist dieses given construkt ein artefakt ultimativer mächtigkeit das genauer erläutert werden will. unter der motorhaube tuckert nämlich hier der schon angekündigte smart match operator so dass obiges beispiel für perl 6 das selbe ist wie:

if ($level ~~ 60) {
}else {
if ($level ~~ ($_>40)) {} # $level ~~ ($_>40) soll zu $level >40 aufgelöst werden (bei ismomorpher gleichheit)
else {default}
}

wer sich jetzt an C erinnert und den dort vorhandenen break befehl muss umdenken denn der hier vorhandenen continue befehl funzt genau andersrum continue gibt man am ende eines when-blocks an wenn man den rest der bedingungen auch checken will. Daraus ergibt sich auch eine interessante folgerung denn man könnte auch schreiben:

given $level {
say "wir heissen alle teilnehmer willkommen";
when $_ < 40 { anfänger... }
say "für den fortgeschrittenen druiden emfehlen wir das aktuelle kräuterbuch des schreibes kalix";
when $_<60 { laber.. }
say "es werden immer noch level 60 tanks in molten core gesucht"
default { laber.. }
}

shortcut versionen mit or und and gehen natürlich auch noch

schleifen:

while $level < 15 { ...hat man wohl noch keine goldmünzen }

while und until können jetzt wie if auf () verzichten, do {} while|until gibts .net mehr, die schreibweise foreach auch nicht und for kann nur noch über listen iterieren. aber dafür haben wir die LOOP

loop { print "Ach kinners, ich könnte ewig so weitermachen" }

loop ($counter = 1; $counter < 20; $counter++) {
say "aha der autor ist neu bei perl";
}

loop { ... } until $fuel;

do {} # nur für einmalige sachen

uuuuuuund

for @lehrer { bart.write( "Ich darf nicht auf dem Wagen von $_ Skateboard fahren") }

oder

for @lehrer -> $lehrer { say "Ich werde stets höflich zu $lehrer sein.") }

wobei der $ natürlich lexikalisch ist und nach gebrauch vorbildlich verschwindet.

es scheint auch irgendwie larrys lieblingsspielzeug zu sein das for auch über beliebige AoA iterieren kann wie

for %kollegium.kv -> $key, $value { say "Der Dozent $key unterrichtet $value." }

for each(@a;@b;@c) -> $a, $b, $c { say "...wisst ihr wenn das licht angeht."}

da geht noch sehr viel mehr aber ich glaub die ist genug für jetzt, hoffe es war angenehm zu lesen.\n\n

<!--EDIT|lichtkind|1143656940-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.

View full thread perl 6 diskussion: irgendwer gesteigertes interesse?