Gå til innhold

Anbefalte innlegg

Ikke direkte Python-relatert, men slektskapet mellom disse to språkene er såpass nært at jeg regner med å kunne få svar her. I Python er det opplagt hvordan man tilordner funksjons(/metode)objekter, men jeg er jammen ikke sikker på hvordan det gjøres i Ruby. I Ruby kalles jo en funksjon selv uten at man skriver ut parantesene, hvordan får jeg så tilgang til selve funksjonsobjektet?

Lenke til kommentar
Videoannonse
Annonse

For å referere til en metode kan du lage et 'symbol' av navnet ved å sette et kolon foran. Metoder er vel ikke first-class objects i Ruby, men (nesten) alltid bundet til et eller annet objekt; du kan riktignok få tak i metode-objektet vha. method-metoden.

 

Kanskje akkurat dette du var ute etter, men også mulig du heller bør bruke en block/proc?

 

Mulig du får et bedre svar om du forteller oss akkurat hva du prøver å oppnå. Er rimelig fersk på Ruby selv, men sikkert noen andre her som har litt peiling.

Endret av Frank2004
Lenke til kommentar

Det jeg trengte var å referere til en metode avhengig av en betingelse. Dvs. at variabilitet i en "algoritme" ble skjult bak en metode-referanse, tilsvarende det å bruke funksjonspekere i C++ istedenfor switch/case. Jeg løste det ved å opprette en closure vha. "proc". Kjente ikke til det med kolon, skal prøve det straks :_) Savner litt den simplistiske modellen i Python. Ruby har noe av TIMTOWDI (There Is More Than One Way to Do It)-preget fra Perl.

Lenke til kommentar
Det jeg trengte var å referere til en metode avhengig av en betingelse. Dvs. at variabilitet i en "algoritme" ble skjult bak en metode-referanse, tilsvarende det å bruke funksjonspekere i C++ istedenfor switch/case.

Hmm.. Dette er vel litt fy i objektorienterte språk? Du bruker heller referanser til et objekt som implementerer metoden det er snakk om.

 

Jeg løste det ved å opprette en closure vha. "proc". Kjente ikke til det med kolon, skal prøve det straks :_) Savner litt den simplistiske modellen i Python. Ruby har noe av TIMTOWDI (There Is More Than One Way to Do It)-preget fra Perl.

Måten du løste det på høres ut som 'the ruby way'. :) Evt. kunne du kanskje brukt en functor-løsning slik jeg nevner over.

 

Om du sender rundt referanser til en metode så må det vel til litt reflection tror jeg, som også skulle være tilgjengelig i python. Men det beste er vel å løse ting uten.

Endret av Frank2004
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...