함수를 변수에 할당하는 다양한 방법

fun main() {
  val calcSum : Int = sum(3, 5)   //(1)
  val calcSubtract : Int = calculate(::subtract, 10, 5)   //(2)
  val calcMultiply : Int = calculate(fun (a:Int, b:Int) = a * b, 3, 5)    //(3)
  val calcDivide : Int = calculate({ a, b -> a / b }, 10, 5)  //(4)

  println("sum : $calcSum" +
      "\nsubtract : $calcSubtract" +
      "\nmultiply : $calcMultiply" +
      "\ndivide : $calcDivide"
  );
}

fun sum (a: Int, b: Int) = a + b
fun subtract (a: Int, b: Int) = a - b

fun calculate (calc: (Int, Int) -> Int, a: Int, b: Int) : Int{
	return calc(a, b)
}

(2) 미리 만들어놓은 일반 함수를 인자값으로 넘길 때는 :: 을 사용한다.

(3) 익명 함수로 넘길 수도 있다

(4) 람다식으로 넘길 수도 있다

+ Recent posts