Thread neue Perl 6 Operatoren (48 answers)
Opened by lichtkind at 2007-11-09 22:22

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.

View full thread neue Perl 6 Operatoren