如何在Ruby中需要一个块?

Kyl*_*ery 18 ruby

是否有任何内置方法要求将块传递给Ruby方法?我知道如果block_given?是假的话我可以提出异常,但有没有更好的方法呢?

Dou*_*ner 23

只需使用yield.

如果包含yield在方法中,并且给出块,则会引发错误.

把它放在一个文件中并运行它:

def needs_block
    yield
end

needs_block
Run Code Online (Sandbox Code Playgroud)

它会抛出这样的错误:

LocalJumpError: no block given
    from (irb):14:in `needs_block'
    from (irb):16
Run Code Online (Sandbox Code Playgroud)


rog*_*ack 12

raise 'need block' unless block_given?
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案,因为它没有副作用(即调用该块)。 (2认同)