낭만 프로그래머

Kotlin(코틀린) 공부하기 - 함수 본문

Kotlin

Kotlin(코틀린) 공부하기 - 함수

조영래 2021. 11. 1. 18:21
함수

1. 함수 선언

fun 함수명(매개변수명: 타입): 반환타입 {
    ...
}


2. 반환 값이 없는 함수

fun test(arg1: Int, arg2: Int) {
	println("hello")
}

fun test2(arg1: Int, arg2: Int): Unit {
	println("hello")
}



3. 반환 값이 있는 함수

fun test(arg1: Int, arg2: Int): Int {
	return arg1+arg2
}



4. 매개변수를 초기화 하여 입력 값을 생략 할 수도 있다

fun test(arg1: Int, arg2: Int = 1004): Int {
	return arg1+arg2
}


/* 사용 */
test(1) // 두번째 매개변수로 1004가 초기값으로 들어감
test(1, 1002) // 두번째 매개변수가 1002로 할당됨

 

람다 함수

1. 람다 함수 선언 예시

// 매개변수 2개를 받아서 합을 반환한다
val lamdaFun = { arg1: Int, arg2: Int -> arg1+arg2 }
// 매개변수 없이 프린트만 실행한다
val lamdaFun = { -> println("Hello") }
val lamdaFun2 = { println("Hello") }
// 변수가 하나일 경우 it 키워드를 사용 할 수 있다
var lamdaFun: (Int) -> Unit = { println(it) }
// 본문이 여러 줄일 경우 마지막 행이 반환값이 된다

// 전체 표현
val lamdaFun: (Int) -> Int = { arg: Int -> 
	var value: Int = arg + 1
	value
}

// 선언에서 자료형 생략
val lamdaFun = { arg: Int -> 
	var value: Int = arg + 1
	value
}

// 람다식 매개변수 자료형 생략
val lamdaFun: (Int) -> Int = { arg -> 
	var value: Int = arg + 1
	value
}
{ println(42) }() // Lamda 선언 및 실행
run { println(42) } // Lamda 선언 및 실행. run 키워드를 쓰는 것이 명확함


2. 람다 함수를 매개변수로 넣기 

fun testFun(x: Int, y: Int, arg: (Int, Int) -> Int): Int {
	return arg(x, y)
}

/* 실행 */
var value = testFun(1, 2, { xValue, yValue -> xValue * yValue})
// 실행시에 람다 함수 변수가 맨 마지막에 있을 경우는 ()에서 {}를 빼낼 수 있다
var value2 = testFun(1, 2} { xValue, yValue -> xValue * yValue}

 

#참고문헌 :
Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린
Do it! 코틀린 프로그래밍