タコさんブログ

プログラミングメモと小言

Swfitのカリー化関数 (Curried Functions in Swift)

環境

カリー化関数の構文

func 関数名 (引数) -> (引数) -> 戻り値の型 {
  return { (引数) -> 戻り値の型
    ボディ
  }
}

カリー化関数の例

カリー化されていない関数 plus

func plus(a: Int, b: Int) -> Int {
  return a + b
}

plusをカリー化した関数 plusc

func plusc(a: Int) -> Int -> Int {
  return { (b: Int) -> Int in
    a + b
  }
}

pluscを使った例

plusc(1)(2) // 出力:3

let addOne = plusc(1) // addOneの型は Int -> Int