2010-02-22 43 views
18

Gibt es irgendwelche eingebaute Möglichkeit, dass ein Block an eine Ruby-Methode übergeben werden muss? Ich weiß, ich kann nur eine Ausnahme auslösen, wenn block_given? falsch ist, aber gibt es einen schöneren Weg, es zu tun?Wie benötigt man einen Block in Ruby?

Antwort

22

Einfach mit yield.

Wenn Sie yield in eine Methode einschließen und ein Block nicht angegeben ist, wird ein Fehler ausgegeben.

diese in einer Datei speichern, und führen Sie es:

def needs_block 
    yield 
end 

needs_block 

Es wird eine Fehlermeldung wie diese werfen:

LocalJumpError: no block given 
    from (irb):14:in `needs_block' 
    from (irb):16 
+1

Nun, das viel zu einfach :) Danke war! –

9
raise 'need block' unless block_given? 
+1

Dies ist die beste Antwort, da es keine Nebenwirkungen hat (d. H. Den Block aufrufen). –

Verwandte Themen