10.14 関数を再定義する

関数の定義を一時的、もしくは恒常的に変更したい。しかし、既存の関数名に新しい関数の定義を関連づけることはできない。

関数を再定義するには、その関数と同じ名前の型グロブに新しく定義した関数のリファレンスを代入する。定義を一時的に変更したい場合は、localを使用する。

undef &grow;    # -wによる再定義のメッセージが表示されなくなる。
*grow = \&expand;
grow();    # expand()が呼び出される

{
  local *grow = \&shrink;  # ブロックが終了するまで別の定義が使用される
  grow();   # shrink()が呼び出される
}