ぜのぜ

しりとりしようぜのぜのぜのぜ

23日目 Nested Functions

日記

今日は退勤後お腹が空いてなかったし特にやりたいこともなかったので虚空を見つめていた.1時間ぐらい経つとお腹が空いてきたのでカレーを作り出した.煮込む間にこれを書いている.

今日書いたコード

今日もFunctionsの章だった.明日からClosuresの章に入る.

func stepForward(input: Int, ignoring: Any) -> Int { return input + 1 }

func chooseStepFunction(backward: Bool) -> (Int, Any) -> Int {
    func stepBackward(input: Int, ignoring this: Any) -> Int { return input - 1 }
    return backward ? stepBackward : stepForward
}

var currentValue = 10
for _ in 0..<100 {
    currentValue = chooseStepFunction(backward: currentValue > 0)(currentValue, 0)
    print(currentValue)
}

初めて知ったこと

関数から返される関数のラベルは無視される.関数を返す関数の定義からは,返される関数の引数と返り値の型しかわからないのでそれはそうかという感じ.引数が多い関数は返したくないなと思った.