Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10765[/thread]

neue Perl 6 Operatoren (Seite 2)

Leser: 37


<< |< 1 2 3 4 5 >| >> 49 Einträge, 5 Seiten
betterworld
 2007-11-12 00:17
#102222 #102222
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Der minmax-Operator mutet irgendwie seltsam an. Der operiert auf zwei Listen mit je zwei Elementen? Gibt es auch minminmaxminmax und so weiter? Oder ist das nur ein Spezialfall? (Oder hab ich irgend was falsch verstanden..?) Steht da irgend ein besonderer Gedanke dahinter?
lichtkind
 2007-11-12 00:57
#102225 #102225
User since
2004-03-22
5701 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
im gegensatz zum min und max operatoren die an sich normale Arraymethoden sind, aber auch den alternativen syntax zulassen den ich vorstellte, ist mir minmax in den synopsen(S03) nur in der form untergekommen wie ich es hier vorgestellt hab. er liefert ein array aus 2 werten. das arithmetische minimum der wete links von sich und maximum der werte rechts von sich. Hoffe damit is deine frage beantwortet.

Einen hab ich noch, auch für alle die auf ruby's times befehl neidisch waren. Wenn man eine schleife einfach nur was 5 mal wiederholen lassen will, geht das in ruby mit:

Code: (dl )
5.times { puts "Hello!" }


was in perl 5.10 ungefähr so aussehen würde:

Code (perl): (dl )
say "Hello!" for 1..5;


An sich kürzer, auch wenn man am liebsten das '1..' noch rauskürzen würde ist das entscheidende was anderes. Wie renee in deinem perl 5.10 Artikel gut bemerkt hat ist der hauptvorteil des neuen say befehles nicht die 4 buchstaben die man einspart ( 4 == (length('print')-length('say')) + length('\n')), sondern das einfach ne fehlerquelle weg ist. Anstatt \n kann man ja mal /n schreiben oder das newline vergessen oder mit der stringverknüpfung was lustiges anstellen. Für dinge die man immer wieder verwendet phne weiter drüber nachzudenken ist es einfach praktisch dann say zu sagen und die ganzen probleme kommen erst gar nicht. genauso könnte bei dem 1..5 man aus versehen 0..5 schreiben und erhält 6 iterationen und ich kann mir auch noch andere Pannen ausdenken. Deswegen ...tatatata:

Code (perl): (dl )
say "Hello!" for ^5;


macht genau was ich wollte obwohl das Dach(^) eigentlich ne agnz andere funktion hat. Ich hatte ja in meinen artikel erklärt das der flipflop operator von (scalar) .. nach ff umbenannt wurde. jetzt kann man mit .. im skalarkontext wirklich prüfen ob eine zahl in einem bereich liegt.

Code (perl): (dl )
5 == 2 .. 7;


Das würde wahr ergeben, und ihr kennt sicher noch aus dem Matheunterricht das es verschiedene Arten Zahlenbereiche gibt. welche mit einer Schranke (in Perl 6 z.b. 3 .. * oder 3 .. Inf ) oder Zahlenbereiche be denen die Schranke nicht zum Zahlenbereich dazu gehört.

Code (perl): (dl )
7 == 2 .. ^7;


Das währe unwahr, da die Schranke 7 schon ausserhalb liegt. Im Arraykontext passiert genau das gleiche, dieser Wert wird rausgenommen und daher expandiert ^7 zu 0..6, was ein Array mit 7 elementen ist, also unsere for schleife 7mal rotieren lässt.

Code (perl): (dl )
say "Hello!" for ^7;
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
betterworld
 2007-11-12 14:30
#102253 #102253
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
lichtkind+2007-11-11 23:57:14--
im gegensatz zum min und max operatoren die an sich normale Arraymethoden sind, aber auch den alternativen syntax zulassen den ich vorstellte, ist mir minmax in den synopsen(S03) nur in der form untergekommen wie ich es hier vorgestellt hab. er liefert ein array aus 2 werten. das arithmetische minimum der wete links von sich und maximum der werte rechts von sich. Hoffe damit is deine frage beantwortet.


Danke. Ja, die Frage ist beantwortet. Nur den praktischen Nutzen im Alltag sehe ich noch nicht so wirklich.
lichtkind
 2007-11-12 15:27
#102260 #102260
User since
2004-03-22
5701 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ich seh den nutzen darin, das guter code auch leicht verständlich ist und man zusammengehöriges kompakt in eine zeile schreiben kann (ah hier werden die extremwerte ermittelt ...).

natürlich gehört das, wie vieles andere in perl 6, nicht zum täglichen bedarf, aber es ist sehr nützlich wenn man es mal braucht. Es gibt in perl 6 den wrap befehl, der für mich eigentlich nur sinn macht wenn man legacy code dynamisch patchen muss ohne ihn anfassen zu dürfen. in so einer situation ist es aber ein echter segen.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
#Kein Kommentar
 2007-11-12 16:10
#102270 #102270
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
das sind ja mal echt geile operatoren!
aber ich glaube die
Code: (dl )
say "Hello!" for ^5;

-schreibweise ist erstmal nur was für die perlianer, die das schon länger machen, und das würd ich echt keinem anfänger zumuten.

aber man sieht das perl6 von perl-leuten geschrieben ist, die immer noch eine hintertür zum verkürzen offen haben wollen :)
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
lichtkind
 2007-11-12 19:05
#102282 #102282
User since
2004-03-22
5701 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
es ist immer noch der selbe larry :) aber sag mir bitte warum du das keinem anfänger zeigen willst, ist diese schreibweise nicht auch einfacher? genau wie anfänger keine probleme haben anstatt

Code (perl): (dl )
for my $i ($i = 0; $i++; $i>4) {


nur noch

Code (perl): (dl )
for (0..4) {


zu schreiben und jetzt halt

Code (perl): (dl )
for (^5) {


Man muss ja nicht gleich die ganze logik dahinter erklären.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
#Kein Kommentar
 2007-11-12 19:15
#102284 #102284
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
es ist bestimmt kompakter, aber jemand der gerade in perl einsteigt, sollte am besten am anfang die leichten, allgemeinen und noch keine speziellen funktionen lernen.

genauso wie man, wenn man englisch lernt, einem auch nicht gleich am ersten tag das present progressive beigebracht wird, obwohl man sich damit besser ausdrücken könnte, sondern erstmal die leichten verständlichen satzbauteile, die es auch in anderen sprachen gibt.

erst wenn man ein bisschen mit perl gearbeitet hat kann, man dann so nach und nach die geheimnisse von Perl entdecken, was ja auch das tolle an Perl ist. perl ist ja nicht so wie andere programmiersprachen, sodass es immer nur einen weg geradeaus gibt, sondern eben auch einen weg hinten rum.

aber ich fang ja schon wieder an zu schwärmen...^^
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
ptk
 2007-11-12 19:43
#102286 #102286
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
GwenDragon+2007-11-11 11:33:18--
<OFFTOPIC>
bloonix+2007-11-11 11:22:56--

Bis dahin jedoch bleibt uns doch immer noch das gute alte Perl 5.
Und es wird Leute/Firmen geben, die ihre Server nicht so schnell auf Perl 6 umstellen werden. Das problem gibt es doch bei 5.6 schon.
</OFFTOPIC>
Zum Glück. Perl6 ist eine komplett andere Sprache. Die Deltas zwischen Perl-Versionen sind dagegen ein Klacks.
lichtkind
 2007-11-12 20:09
#102289 #102289
User since
2004-03-22
5701 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ja das kann ich nachvollziehen, sonst wär ich ja nicht hier. trotzdem um dein beispiel zu bemühen, ist present progressive komplizierter als simple present und ^5 ist ja eher einfacher.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
ptk
 2007-11-12 20:15
#102291 #102291
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
times gibt es bei Perl 5 schon und heißt hier einfach x.
<< |< 1 2 3 4 5 >| >> 49 Einträge, 5 Seiten



View all threads created 2007-11-09 22:22.