이번 글에서는 함수에 대해서 알아보도록 하겠습니다.
함수
함수란 무엇일까요?
함수는 영어로 function이라고 하는데, 어떠한 정해진 작업을 수행하기 위해서 만들어진
코드들의 집합, 즉 프로그램 내의 작은 프로그램 이라고도 말할 수 있습니다.
사실 우리들은 지금까지도 계속해서 함수들을 사용해왔습니다.
우리가 출력할 때 사용한 println, 형변환시 사용한 toXXXX등이 모두 함수에 속합니다.
이렇게 코틀린에서 기본적으로 사용할 수 있도록 만들어져 있는 함수들을 '라이브러리 함수'라고 부릅니다.
함수를 왜 써야하는가?
그렇다면 이런 함수는 왜 사용할까요?
예를 들어 여러분이 어떠한 계산을 수행해야 한다고 생각해봅시다.
여기서는 간단하게 두 수를 곱한 뒤, 이 값을 다른 수로 나누고, 그 결과를 다시 나머지 연산을 수행한 값을 구한다고 생각해볼까요?
fun main() {
var a = 17
var b = 23
var c = 4
println(a * b % c)
}
이런 연산의 경우 얼마 안 되는 간단한 코드로 해결할 수 있지만, 연산이 길어지거나 복잡한 작업을 수행한다면 어떨까요.
그리고 이러한 작업을 프로그램의 한 부분이 아닌 여러 곳에서 사용해야 한다고 생각해봅시다.
그러면 이를 일일이 써넣어야 하는 불편함이 매우 클 것입니다.
만약 여러분이 지금까지 출력을 수행할 때마다 println함수의 내용을 직접 코딩해야 했다면 얼마나 불편했을까요?
따라서 우리는 이렇게 정해진 작업을 수행하는 코드들을 함수로 만들어서 필요할 때마다 호출해 사용하는 겁니다.
이렇게 프로그래밍 언어에서 기존에 만들어져 있는 함수가 아닌, 프로그래머가 필요에 의해
새로운 함수를 정의해서 사용하는 것을 '사용자 정의 함수'라고 이야기합니다.
함수 생성
그럼 이제 코틀린에서 함수를 만드는 법에 대해서 알아보도록 합시다.
fun myFun(a: Int, b: Int, c: Int): Int{
return a * b % c
}
함수를 선언하려면 먼저 fun이라는 키워드를 사용하고 그 뒤에 사용할 함수명을 적어줍니다.
그리고 해당 함수를 호출할 때 그 함수를 호출하는 다른 함수로부터 받을 값을 저장할 변수들을 괄호 안에 적어줍니다.
이 변수들은 '매개변수'(parameter)라고 하며, 만약 다른 함수로부터 받아올 값이 없다면 적어주지 않아도 됩니다.
매개변수를 지정했으면, 괄호 뒤에 해당 함수가 반환할 데이터의 자료형을 지정해줍니다.
함수는 작업을 수행한 뒤, 자신을 호출한 함수에게 특정한 값을 돌려줄 수 있는데, 이를 반환값(리턴값)이라고 합니다.
이 반환값도 마찬가지로 따로 반환할 값이 없다면 적어주지 않아도 됩니다.
이렇게 함수의 기본적인 형태를 정의했다면, 중괄호({})안에 해당 함수가 수행할 코드들을 작성해주시면 됩니다.
저희는 위에서 해봤던 연산을 함수에 정의해서 그 값을 반환하는 함수를 작성해보도록 하겠습니다.
함수에서 값을 반환할 때에는 return이라는 키워드를 사용합니다.
fun main() {
var a = 17
var b = 23
var c = 4
println(myFun(a, b, c))
}
fun myFun(a: Int, b: Int, c: Int): Int{
return a * b % c
}
함수를 호출할 때에는 함수명(인수)와 같은 형태로 호출할 수 있습니다.
여기서 '인수'(argument)란 위에서 말한 호출하려는 함수에 넘겨주는 값을 이야기합니다.
이 인수가 함수에서 정의한 매개변수에 순서대로 입력되어 해당 함수 내에서 사용됩니다.
또한 중요한 부분으로, 함수 내에서 return키워드를 사용할 시 함수는 return키워드를 만나자마자 종료됩니다.
즉, 함수를 실행 중이더라도 중간에 return을 만나게 되면 함수는 즉시 종료되고 값을 반환합니다.
fun main() {
myFun()
}
fun myFun(){
println("안녕하세요.")
return
println("코틀린좋아")
}
위와 같이 myFun함수의 중간에 return을 끼워 넣을 경우 "안녕하세요"는 출력되지만
"코틀린좋아"라는 문자열이 출력되기 전에 함수가 종료되므로, 해당 문자열은 출력되지 않습니다.
이러한 함수의 구조를 잘 사용하면 좀 더 유연하게 프로그램이 동작하도록 만들 수 있습니다.
단일 표현식 함수
우리가 위에서 만들었던 a * b % c연산을 수행하는 함수의 경우 매우 간단한 기능을 하는 함수인데,
이러한 간단한 함수를 더 짧고 간결하게 기술할 수 있도록 코틀린에서는 '단일 표현식 함수'라는 것을 지원합니다.
fun main() {
var a = 17
var b = 23
var c = 4
println(myFun(a, b, c))
}
fun myFun(a: Int, b: Int, c: Int) = a * b % c
이때는 함수 선언 시에 변수에 값을 대입하는 것처럼 =을 통해서 함수를 만들 수 있습니다.
또한 단일 표현식 함수를 사용할 때에는 반환값의 타입추론이 가능하기 때문에, 반환형을 생략해줄 수 있습니다.
이렇게 저희가 프로그래밍을 하면서 몰라서는 안될 중요한 '함수'에 대해서 알아봤습니다.
이번 글은 이 정도로 마치도록 하겠습니다.
감사합니다.
'프로그래밍 언어 > 코틀린' 카테고리의 다른 글
코틀린 8. 조건문 (0) | 2020.12.22 |
---|---|
코틀린 7. Nullable변수 (0) | 2020.12.21 |
코틀린 5. 배열 (0) | 2020.12.21 |
코틀린 4. 타입추론과 형변환 (0) | 2020.12.21 |
코틀린 3. 변수와 자료형 (0) | 2020.12.20 |