Kotlin(코틀린) 기본문법 4. 함수

차선호·2023년 3월 30일
0

Kotlin

목록 보기
4/8
post-thumbnail

함수


일반 함수

  • 일반 함수 선언과 간략화 표현
    fun 함수이름([변수이름 : 자료형, ... ]): 리턴 타입{
    		표현식,,,
    		return 반환값
    }
    //일반함수 add
    fun add(x1: Int, x2: Int):Int{
    		return x1+x2
    }
    //brace 생략하고 = 으로 assign
    fun add1(x1: Int, x2: Int):Int = x1+x2
    
    //return type 생략, 추론 가능
    fun add2(x1:Int, x2: Int) = x1+x2

람다

  • 람다 표현식
    • 람다 함수는 프로그래밍 언어에서 익명 함수를 뜻함
    • 람다의 형태
      • 람다는 fun과 함수 이름을 명시하지 않고 축약형으로 선언
    • {매개변수 → 함수 내용}

  • 람다 규칙
    • 람다 함수는 항상 { }으로 감싸서 표현
    • { } 안에 ‘→ ‘표시가 있으며 ‘→’ 왼쪽은 매개변수, 오른쪽은 함수 내용
    • 매개변수 타입을 선언해야 하며 추론할 수 있을 때는 생략 가능
    • 함수의 반환 값은 함수 내용의 마지막 표현식
    • 매개변수가 하나인 경우 생략 가능
      • 무조건 it으로 통일
    • 코드의 마지막 줄은 return type으로 추론

일반함수 vs 람다함수

  • 일반함수
    //일반함수
    fun sum(x1: Int, x2: Int): Int{
    		return x1+ x2
    }
  • 람다함수 : 표현식이 한 줄일 때 - 예) {x,y→x+y}
    //람다함수
    val add = {x1: Int, x2: Int -> x1+x2}
    
    fun main(){
    		val result = add(10, 20)
    		println(result) //30
    }

람다식의 구성

  • 표현식이 2줄 이상일 때
    //람다식이 어려 줄일 때는 마지막 라인이 리턴
    val sumw: (Int, Int) -> Int = {x1: Int, x2: Int ->
    		println(x1+x2)
    		x1+x2 //이 줄(마지막 줄) 리턴
    }
  • 자료형의 생략
    val multi: (Int, Int) → Int = {x: Int, y: Int → x*y} // 생략되지 않은 전체 표현
    val multi = {x: Int, y: Int -> x*y} // 선언 자료형 생략
    val multi: (Int, Int) -> Int = {x,y -> x*y} // 람다식 매개변수 자료형의 생략
    val multi: {x,y -> x*y} // 에러!! 추론 불가!
  • 반환 자료형이 없거나 매개변수가 하나 있을 때
    val greet: () -> Unit = {println("Hello World!")}
    val square: (Int) -> Int = {x -> x*x}
  • 람다식 안에 람다식이 있는 경우
    val nestedLambda: () -> () -> Unit = {{println("nested")}}
  • 선언부의 자료형 생략
    val greet2 = {println("Hello World!")} //추론가능
    val sqare2 = {x: Int -> x*x} //선언부분 생략하면 x의 자료형을 명시해야 함
    val nestedLambda = {{println("nested")}} //추론가능
profile
dkssud!

0개의 댓글