study-note

2. 関数

目次


関数定義

参照:サンプルコード


無名関数(関数リテラル)

(x: Int) => x + 1


  1. 変数に代入して使う場合

    val addOne = (x: Int) => x + 1
    println(addOne(5))  // 6
    
  2. 高階関数の引数に渡す場合

    val nums = List(1, 2, 3)
    val doubled = nums.map(x => x * 2)  // List(2, 4, 6)
    


部分関数(Partial Function)

クロージャ(Closure)

外側の変数を参照・利用する無名関数

val factor = 2
val multiply = (x: Int) => x * factor


高階関数(Higher-Order Functions)

関数を変数として定義する

val square = (x: Int) => x * x
println(square(5))  // 25

関数を引数として渡す

def applyTo10(f: Int => Int): Int = f(10)

val result = applyTo10(square)
println(result) // 100

参照:サンプルコード


カリー化と部分適用

カリー化(Currying)

複数引数の関数を、引数1つずつで呼び出せるように分割する技法

def add(a: Int)(b: Int): Int = a + b

val result = add(2)(3)  // 5

部分適用(Partial Application)

カリー化された関数に一部の引数だけを先に与えて、残りを後で与えるテクニック

val add2 = add(2)     // b: Int => Int
println(add2(5))      // 7


参照:サンプルコード


3. コレクション