On 03.Aug 2005 - 00:57:58, Thorsten Haude wrote:
> * Andreas Pakulat wrote (2005-08-02 23:20):
> >On 02.Aug 2005 - 21:58:28, Thorsten Haude wrote:
> >> * Frank Küster wrote (2005-08-02 10:09):
> >> >  Zumal dann, wenn .each auch auf anderen Dingen als
> >> >  Verzeichnissen agieren kann (z.B. URLs oder Datenbank-dingsens).
> >> 
> >> Wo ist dabei das Problem? Wenn Du Dateien aus einer URL lesen willst,
> >> machst Du vielleicht einen Fehler, oft ist es aber nützlich, wenn Du
> >> Deine Objekte verschiedener Klassen gleich behandeln kannst. In Java
> >> würde man dazu viele Casts verwenden, in Ruby ist das nicht nötig. Das
> >> ist also kein Problem:
> >
> >Nicht zwangsweise, zum einen sind die Container in Java alle auf Object
> >basierend und du hast somit ein paar Funktionen.
> 
> Naja, wohl kaum etwas sinnvolles.

Java ist ja auch nicht derart stark OO wie Python oder Ruby. Jedenfalls
in Python ist alles ein Objekt, was manchmal sehr hilfreich sein kann...
Und vor allem die dynamische Typbestimmung muss quasi im Code extra
eingeschaltet werden.

> Für die ganz Mutigen geht es auch anders (und das erklärt dann auch,
> warum das bei Ruby kein Compilerfehler sein kann:
> 
>     array.each { |thing|
>         if ! thing.respond_to?(:each)
>             def thing.each
>                 yield("I don't know how to do 'each', so I just return this 
> string")
>             end
>         end
>         thing.each { |element|
>             print element
>         }
>     }

Das ist cool ;-)

> >Gibts andere Sprachmittel um das Veraendern eines Objektes zu
> >verhindern, ala const in C++?
> 
> Du kannst Konstanten haben, wenn Du welche willst. Dazu gibt es eine
> Konvention, die auch der Interpreter kennt: Konstanten beginnen mit
> einem Großbuchstaben. Allerdings (und das stört mich) kann man den
> Wert von Konstanten ändern. Der Interpreter warnt zwar, schön ist das
> deswegen aber noch nicht.

koennen Konstanten auch Funktionen sein? Also so dass der Interpreter es
nicht zulaesst, dass in der Funktion das Objekt veraendert wird? In C++
gibts dafuer ja "funkion() const;"...

Andreas

-- 
You'll wish that you had done some of the hard things when they were easier
to do.


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

Antwort per Email an