깡샘코틀린프로그래밍 (5) 썸네일형 리스트형 [코틀린] 고차함수 - 함수 참조와 익명 함수 이용 고차 함수에서 매개변수나 반환값으로 람다 함수를 많이 이용하지만, 함수 참조나 익명 함수를 이용해도 된다. 함수 참조를 이용한 함수 전달 고차 함수를 이용할 때 람다 함수 외에 함수 참조 연산자로 콜론 두개(::)를 이용할 수도 있다. 먼저 아래 소스코드는 람다코드로 작성한 코드이다. fun hoFun6(argFun: (x:Int) -> Int){ println("${argFun(10)}") } fun main() { hoFun6 { it * 5 } } [결과값] 50 고차함수를 선언하고, 매개변수로 함수를 받고 있다. 이렇게 선언한 고차 함수를 호출하면서 함수를 전달해야하는데 위의 소스코드에서는 it *5 라는 람다 함수를 넘겨서 10 * 5의 결과값을 출력하고 있다. 이런 소스 코드를 다음과 같이 함.. [코틀린] 고차함수 - 함수 반환 고차 함수는 다른 함수를 매개변수로 이용하거나, 반환하는 함수이다. 앞에서는 매개변수 부분에 함수를 이용하는 방법을 알아보았다. 이번에는 고차 함수에서 함수를 반환하는 방법에 대해 살펴보겠다. fun hoFun5(str: String): (Int, Int) -> Int { return when (str) { "*" -> { x1, x2 -> x1 * x2 } "-" -> { x1, x2 -> x1 - x2 } "/" -> { x1, x2 -> x1 / x2 } else -> { x1, x2 -> x1 + x2 } } } fun main() { val resultFun = hoFun5("*") println("resultFun * : ${resultFun(10,5)}") } [결과값] resultFun *.. [코틀린] 고차함수 - 매개변수 대입 고차함수란, 매개변수로 함수를 전달받거나 함수를 반환하는 함수를 말한다. 아래 소스에서는 fun 예약어와 hoFun이라는 함수명 그리고 ( )안에 매개변수, { } 안에 함수 내용을 선언했다. fun hoFun(x1: Int, argFun: (Int) -> Int){ val result = argFun(x1) println("x1 : $x1, result : $result") } fun main() { hoFun(10, {x -> x * x} ) } [결과값] x1 : 10, result : 100 하지만 일반 함수와는 차이가 있다. 두 번째 매개변수는 argFun: (Int) -> Int로 선언했다. 매개변수로 함수를 받고자 함수 타입을 선언한 것이다. 코틀린에서는 일반적으로 데이터 타입을 선언할 때 .. [코틀린] 람다 표현식 람다식 또는 람다함수는 프로그래밍 언어에서 사용되는 개념이다. 익명함수라고도 부르며, 함수형 프로그래밍을 목적으로 하지 않더라도 간결함을 주 목적으로 사용된다. 함수형 프로그래밍에서는 람다 함수가 고차 함수의 매개변수나 반환값으로 사용되므로 더욱 중요하다. 코틀린에서 함수의 정의는 fun 예약어를 사용한다. fun 함수이름(매개변수) { 함수내용 } 람다 함수는 fun과 함수이름을 명시하지 않고 축약형으로 선언한다. {매개변수 -> 함수 내용} 람다 함수는 {}안에 매개변수와 함수 내용을 선언하는 함수로 아래와 같은 규칙을 정의한다. 1. 람다 함수는 항상 {}로 감싸서 표현한다. 2. {} 안에 -> 표시가 있으며 -> 왼쪽은 매개변수, 오른쪽은 함수 내용이다. 3. 매개변수 타입을 선언해야 하며 추론.. [코틀린] 일급 객체로서의 함수 코틀린에서 함수가 일급 객체로 활용되는 부분에 대해서 살펴보겠다. 코틀린의 함수 내에는 다양한 구성요소를 포함시킬 수 있다. fun superFun() { val superData = "hello" fun subFun1() { println("subFun1() .. superData : $superData") } fun subFun2(a: Int, b: Int): Int { subFun1() return a + b } class SubClass{ fun classFun(){ println("classFun() .. superData : ${superData}") } } subFun1() SubClass().classFun() } 함수를 클래스에 포함하지 않고, 함수 내부에 변수, 함수, 클래스를 선언했다.. 이전 1 다음