>>321
あくまで擬似コードだけど。

class Button
attr_accessor :onclick, :text
def _some_process_on_click_
foo
@onclick.call(self)
bar
end
end

onclick= はインスタンス変数 @onclick への代入。
Proc#call で Proc の処理を実行できる。
Button オブジェクトはボタンが押されたら見た目を変えたり
色々するわけだけど(_some_process_on_click_ ね)、
その中で @onclick.call(self) とかしておけば、
自分をブロック引数にして @onclick の Proc の処理を実行できる。

つまるところ、インスタンスごとに振る舞いを変えたいという時に使う。
C なら関数ポインタを使うだろうし、
Java ならサブクラスや strategy パターンを使うだろうね。