-
[ Kotlin ] 함수Kotlin 2020. 8. 3. 15:53
함수
함수의 선언
fun 함수 이름([변수 이름 : 자료형, 변수 이름 : 자료형...]) : [반환 값의 자료형] {
표현식...
[ return 반환 값 ]
}fun sum(a: Int, b: Int): Int { return a + b }
매개변수는 콤마(,)를 이용하여 여러 개를 지정할 수 있고 콜론(:)을 이용하여 자료형을 명시해 주어야 합니다. 만약 반환 값이 있는 경우 반환 값의 자료형도 반드시 명시해야 합니다. 반환 값이 없는 경우 자료형의 표기를 생략해도 되고 Unit으로 지정해도 됩니다.
간략하게 함수 선언하기
위에서 예시로 둔 함수는 좀 더 간략하게 표현할 수 있습니다. 위의 sum 함수와 같이 매개 변수로 들어온 값으로 연산해 바로 반환되는 함수의 경우, 중괄호와 return 키워드를 제거한 대신 등호를 사용하는 아래와 같이 작성할 수 있습니다.
fun sum(a:Int, b:Int) : Int = a + b
만약 반환할 데이터의 자료형이 매개 변수의 자료형과 같다면 반환 자료형도 제거할 수 있습니다.
fun sum(a:Int, b:Int) = a + b
매개변수
매개 변수 기본 값
함수의 매겨 변수를 선언한 경우, 함수 호출 시 꼭 값을 넣고 호출해야 합니다. 그렇지 않은 경우 오류를 출력하게 됩니다. 그런데 매개 변수에 기본 값을 설정해 둔 경우 값을 전달하지 않고도 함수를 실행할 수 있습니다.
매개 변수 이름과 함께 호출하기
가끔 매개변수 너무 많은 함수를 호출하다 보면 매개변수의 순서를 헷갈리는 경우도 있습니다. 코틀린은 매개변수의 이름과 함께 인자를 전달하는 방법을 제공하기 때문에 전달하고자 하는 매겨 변수의 인자 값과 이름을 함께 작성해 순서에 상관없이 입력할 수 있습니다,
가변 인자 ( variable arguments ) 사용하기
매개 변수를 선언할 때, vararg 키워드를 입력하면 해당 매개 변수가 가변 인자를 담을 수 있는 변수가 됩니다. 따라서 인자의 개수만 다른 동일한 함수를 여러 개 선언하지 않아도 됩니다.
함수와 Stack 메모리
Kotlin은 따로 클래스를 만들지 않아도 함수를 생성할 수 있습니다. main() 처럼 클래스 멤버가 아닌 파일에서 직접 작성되는 함수는 최상위(Top-level) 함수로 이름을 어디서든 참조할 수 있게됩니다. 이런 함수는 메모리에서 고정적으로 존재하기 때문입니다. 반면에 지역(local) 함수는 특정 블록 내에서만 그 생명 주기를 갖고 있기 때문에 블록을 벗어나면 해당 함수는 존재할 수 없게 됩니다. 이런 경우 블록 내에서 반드시 먼저 함수 선언을 가지고 있어야만 해당 이름의 함수를 이후에 사용할 수 있게됩니다.
함수 뿐만 아니라 함수 내부에서 선언된 변수들도 임시 메모리인 Stack에 쌓이고 일정 생명 주기를 가지게 됩니다.
출처
'Kotlin' 카테고리의 다른 글
[ Kotlin ] 람다식 ( Lambda ) (0) 2020.08.04 [ Kotlin ] 함수형 프로그래밍 (0) 2020.08.03 [ Kotlin ] 자료형 - 비교, 검사, 변환 (0) 2020.07.29 [ Kotlin ] 자료형 - 논리 자료형과 문자형 (0) 2020.07.29 [ Kotlin ] 자료형 - 정수형과 실수형 (0) 2020.07.29