[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Python oder Perl



Moin,

* Frank Küster wrote (2005-08-02 18:39):
>In Python:
>
>for <name> in <liste>
>    body
>
>und in Ruby
>
><liste>.each { |<name>|
>    body
>}
>
>Hier passieren zwei Dinge, die für mich ungewohnt sind.  Zum einen dass
>eine Variable einer Funktion als Argument übergeben wird, indem man sie
>mit '.' verbindet (anstatt wie üblich mit Klammern oder ganz ohne), und
>das ganze auch noch in postfix-Notation - also nicht each.<liste>.

Na, das hätte Dich dann vielleicht darauf bringen sollen, daß Deine
Betrachtungsweise in diesem Fall, sagen wir, den Sachverhalt nicht
vollständig beschreibt.

In Deinem Beispiel ist <liste> ein Objekt, dem die Nachricht 'each'
geschickt wird. Das 'each' wiederum hat einen Parameter, nämlich den
Block '{ |<name>| body }'. Die Punktschreibweise gibt es so auch in C,
C++ und Java. Daß man einen Block als Parameter übergibt ist in Ruby
neu und sehr geil.


>Zum zweiten ein Mix von Syntaxelementen und Funktionen.  Der Pythonstil ist
>"reine Syntax", er besteht nur aus Schlüsselworten (und Schlüsselsymbol-
>en, wenn man die Einrückung berücksichtigt). In Ruby verwendet man eine
>*Funktion*, um das gleiche syntaktische Konstrukt zu erzeugen.

Es ist eben nicht das gleiche, siehe oben und meine andern Mails.


>Und dann - aber das fällt mir erst jetzt auf - wird Prefix-Notation mit
>Space und Postfix-Notation mit dot gemischt:
>
>if <name>.funktion.eins?
>   funktion.zwei "is a directory"

Punkt und Klammern sind eben unterschiedliche Dinge. In allen Fällen
ist die Schreibweise identisch, man kann eben in Ruby nur Dinge
weglassen, die man gerade nicht braucht:

Objekt      .   Methode     (   Parameter           )   Block
Dir         .   new         (   '/tmp'              )
dir         .   each                                    { |filename| <block> }
filename    .   stat
stat        .   directory?
                print           "is a directory"


Thorsten
-- 
In dem Augenblick, wo wir anfangen unsere Freiheitsrechte
einzuschränken, besorgen wir das Geschäft der Terroristen.
    - Günter Grass

Attachment: pgpXv_pwbqMHB.pgp
Description: PGP signature


Reply to: