2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bashで局地/ローカル関数を作る

Posted at

ここでの局地関数・ローカル関数とは「関数内部のみのスコープを持つ関数」のことを指します。
いい単語を知らなかったんです...


bashの関数内で、ローカルな関数を作成するには以下のようにします。

function outer() (
  function inner() {
  # 処理
  }
)

この例では、outerだけが関数として認識され、innerは存在しないようになります。
簡単な話、関数の内部にてそのまま関数を定義するだけです。
しかし中々びっくりだった...

因みにポイントは外側の関数の処理を{}ではなく()で覆うことです。

関数定義の際、()を使うとその関数の内部は子プロセスで実行されることになります。
すると内部で定義した関数のスコープはその子プロセスまでに限定されます。
そのおかげで外側の関数を抜ける際、内部で作成された関数はプロセスごと消えるため、外に漏れない=局地関数ができる、という仕組みになります。
因みに{}としてしまうと、関数を一度実行すればinnerもグローバルに存在してしまうため注意が必要です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?