rubyのブロックを引数にする関数がよくわかりません。
単に実行するだけのものを定義する時は
def my_func
  yield
end
みたいにしたり&blockというような引数を使うことはわかったのですが
open( "aa.txt", "r" ){ |file|
}

のopen関数のような、他の値も引数にもっていて、ブロックも引数を持っているような関数はどうやって作れば良いのでしょうか
もし良ければ教えて下さい