본문 바로가기

Language/Kotlin

[Kotlin] 3장. 함수와 함수형 프로그래밍 1 - 함수형 프로그래밍

728x90

Kotlin 함수의 구조

 

 

  • fun 키워드 : 모든 함수는 fun 키워드로 시작
  • func : 함수 이름
  • (a: Int, out: (Int) -> Unit) : 매개변수 정의. a는 Int 타입, out은 Int타입을 매개변수로 받고 아무것도 반환하지 않는 람다형 함수를 매개변수로 가진다.
  • : String : 반환 값의 자료형. func 함수는 String 타입의 변수를 반환한다. 아무것도 입력하지 않으면 반환 값이 없는 것이다.
  • println(~) .. : 함수 본문
  • return ~ : 반환 값. 반환 타입에 맞는 값을 반환. 

함수의 간략화

 

 

중괄호(함수의 본문)이 한줄로 return 값만 있는 경우 sum2, sum3과 같이 중괄호와 return을 생략하고 사용할 수 있다.

 

반환 값이 없는 함수

반환 값이 없는 함수의 경우 반환 값의 타입명을 명시해주는 부분에 Unit을 선언하거나, 아무런 값을 선언하지 않으면 반환 값이 없는 것으로 인식한다.

 

 

매개변수 default 값 설정

kotlin에서는 매개 변수에 default 값을 성정하여 함수를 선언할 수 있다.

 

 

각각 매개변수를 2개씩 가지고있는 함수로, 함수 이름은 직관적으로 default값을 가지고 있는 변수 명으로 하였다.

 

 

이와 같이 해당 함수들을 호출할 수 있다.

Default 값을 가지고 있는 매개변수는 값을 전달하지 않아도 상관 없다.

하지만, 매개변수의 전달은 항상 순서대로 전달을 해야하기 때문에, defaultA, defaultAB에서 a 변수에 default 값이 있다고 생략하고 b 값 하나만 매개변수로 넣게 되면, b값으로 인식하는 것이 아닌 a 값으로 인식이 되기 때문에 반드시 순서대로 변수 값을 전달 해주어야 한다.

 

결과 값은 이와 같이 나온다.

 

매개변수 이름과 함께 호출

  • 위의 예제처럼 매개변수에 default 값을 설정하더라도, 매개변수 개수에 따라서 default 값을 제대로 활용하지 못하는 경우가 있고,
  • 매개변수가 너무 많은 함수의 경우 어떤 인자를 매개변수로 전달했는지 헷갈리는 경우가 있다.

따라서, 매개변수를 호출할 때 매개변수의 이름도 함께 호출할 수 있다.

위의 defaultA를 호출 할 때 다음과 같이 사용이 가능하다.

 

 

매개변수 이름과 함께 호출하기 때문에, 매개변수의 순서대로 입력하지 않고 중간에 default로 설정된 매개변수가 있으면 생략하고 사용이 가능하다.

 

매개변수의 개수가 고정되지 않은 함수

매개변수의 개수가 고정되지 않은, 가변 인자를 사용하는 함수는 vararg 키워드를 사용하면 된다.

 

 

이와 같이 사용하게 되면, 가변인자 value는 int형 배열으로 사용되게 된다.

728x90