En blokk er en kodebit, som kan motta argumenter og returnere en verdi. Der slutter likhetene med en metode.
En blokk holder også tak i den omliggende konteksten og bindingen. Det betyr at lokale variable er tilgjengelig i blokk-koden, noe som gjør den perfekt til callback, f.eks. i grafiske brukergrensesnitt.
1| # En enkel, naiv iterator metode. 2| def tell_fingre 3| yield "Tommel" 4| yield "Peke" 5| yield "Lange" 6| yield "Ringe" 7| yield "Lille" 8| end 9| 10| # Blocken har tilgang til lokale variabler. 11| postfix = "finger..." 12| 13| # Vi sender med en block når vi kaller iterator-metoden. 14| tell_fingre do |finger| 15| puts finger + postfix 16| end |
En blokk er ikke et objekt av effektivitetshensyn, men kan innkapsles i et Proc-objekt. (Via Proc.new, nøkkelordene proc og lambda, eller via bruk av &
-prefikset i argumentlista til metodedefinisjonen)