Vlákno názorů k článku Ruby z rychlíku od gmmns - Mam rad Python, ale Ruby vypada take docela...

  • Článek je starý, nové názory již nelze přidávat.
  • 8. 2. 2002 10:40

    gmmns (neregistrovaný)

    Mam rad Python, ale Ruby vypada take docela pekne. Zajimala by me jedna vec: Je mozne v Ruby nejak zjistovat informace o existujicich tridach, modulech, metodach apod?

    Priklad v Pythonu:

    >>> import string
    >>> dir(string)
    *** Vypise funkce, atributy a tridy modulu string
    >>> string.lower.__doc__
    *** Vypise informace o funkci lower z modulu string
    >>> s = "aaa"
    >>> dir(s)
    *** Vypise atributy a metody

  • 8. 2. 2002 11:07

    Dalibor Šrámek (neregistrovaný)

    Nejdříve odpověď na otázku: ano, je to možné. Např.:
    a='retezec'
    puts a.respond_to? :reverse
    puts a.respond_to? :abs
    Vypíše:
    true
    false
    Pomocí a.methods bychom vypsali všechny metody objektu.
    Abych tady nepsal další článek, dodám jen, že v Ruby je "reflexe" (je pro reflection nějaký ustálený český výraz?) podporována opravdu důkladně. V několikrát zmiňované on-line knize je o ní celá kapitola.

    Dále bych rád poznamenal, že článek byl zamýšlen, jako rychlé seznámení s Ruby a cílem bylo navnadit čtenáře k dalšímu studiu (budou ještě dva díly). Objektovým modelem v Ruby jako samotným se v něm proto příliš nezabývám, abych zbytečně nemátl čtenáře, kteří objektově neprogramují.
    Pokud však bude zájem, dopíšu ještě pokračování o objektech.

  • 8. 2. 2002 11:18

    Michal (neregistrovaný)

    Napis vsechno! ;-))

    (A ted vazne: Napis vsechno, kdyz uz jsou jini Ruby nadsenci literarne impotentni, ci lini)

    PS: Myslim si, ze objekty jsou pro vetsinu zacatecniku snazsi k pochopeni nez neobjektove programovani (Objekt = Vec;
    zeryk = Pes.new("Zeryk")
    zeryk.stekej => "Haf haf"
    se mi zda pro zacatecnika jednodussi nez "stekati zerykem" - stekej(zeryk)
    )

  • 8. 2. 2002 11:08

    Michal (neregistrovaný)

    Jiste, ze!
    s = "String"
    s.methods => vrati pole ve kterem jsou nazvy metod
    (a protoze to je pole, muzes nan zavolat metodu sort a ono se setridi; tedy s.methods.sort je setridene pole nazvu metod)
    no jo, ale Ruby je plne objektovy; tedy se muzes optat jake metody ma strida 'String': String.methods

    instancni promenne: s.instance_variables

    Dalsi hracky najdes jiste sam, nebo je (dozajista) najdes v dalsim clanku...