こんなコードがあった。 blockの評価結果が偽だったらエラーにする、という意図だと。 def die!(&block)! yield || raise("error") end 実行 irb(main):008:0> die! { true } RuntimeError: error from (irb):6:in `die!' from (irb):8 from /usr/local/var/rbenv/versions/1.9.3-p448/bin/irb:12:in `<main>' irb(main):009:0> die! { false } => true ( ゚д゚) ?! 正しくはこうですね def die!(&block) yield || raise("error") end syntax errorにはなりませんか。そうですか……。