0
0

log:クロージャについて

Last updated at Posted at 2024-01-15
s = 'Takeshi'
def ask(x):
    def saying():
        return 'Im'+x
    return saying

#呼び出し
name = ask(s)
name()

つたないコードですが、学習したクロージャについて載せます。

関数の中に関数があります。

処理の流れ

  1. askを呼び出し引数sを与え、name変数にいれる
  2. askは呼び出されたとき同時にsaying関数を呼び出している。それがname変数に入っている。
  3. saying関数は、askの仮引数xにある値を覚えている。つまりsを覚えている。
  4. 最後にname()で動かすとsaying関数の処理'Im+xが戻り値としてでてくる
    (xには'Takeshi'が入っているので'ImTakeshi'とでてくる)

このように外の関数に与えられた値を覚えていることをクロージャという。

以上がクロージャについて私が理解している内容になります。

0
0
1

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
0
0