Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- Effective Java
- mst
- 수학
- Kotlin
- 플로이드-와샬
- 동적계획법
- CS
- 문자열
- 유니온 파인드
- BFS
- 세그먼트 트리
- 그리디
- Network
- dfs
- 완전탐색
- 후니의 쉽게 쓴 시스코 네트워킹
- 프로그래머스
- 백준
- 백트래킹
- 투 포인터
- 구현
- 시뮬레이션
- java
- 이분탐색
- JUnit 5
- swea
- 에라토스테네스의 체
- 위상정렬
- 스택
Archives
반갑습니다!
[Kotlin] 함수 본문
함수의 정의
코틀린은 함수를 다음과 같이 선언한다.
fun 함수 이름([변수 이름: 자료형, 변수 이름: 자료형, ...])[: 반환 자료형] {
표현식...
[return 반환값]
}
이 때 []에 해당하는 부분은 생략할 수 있는 부분이다. 함수가 반환하는 값이 없는 경우는 Unit
을 반환하는데, 이는 일반적으로 사용하는 void
와 같은 개념이라고 이해하면 된다. 즉, Unit
은 아무런 의미가 없는 반환값이다.
함수의 축약형
코틀린에서는 함수를 축약해서 쓸 수 있다는 특징이 있다.
fun sum(a: Int, b: Int): Int{
return a + b
}
위와 같은 함수는
fun sum(a: Int, b: Int): Int = a + b
또는 컴파일러의 추론을 이용해
fun sum(a: Int, b: Int) = a + b
형태로 축약할 수 있다.
지역 함수
코틀린에서는 지역 함수의 선언을 지원한다. 이 떄 지역 함수는 호출하기 전에 정의가 되어있어야 한다.
fun main(){
var result = sum(1, 2) // 컴파일 에러
fun sum(a: Int, b: Int) = a + b
}
위와 같이 함수를 선언하기 전에 호출하게 되면 컴파일 에러가 발생하게 된다.
fun main(){
fun sum(a: Int, b: Int) = a + b
var result = sum(1, 2)
println("Result : $result")
}
/*
* 실행 결과
* Result : 3
*/
위와 같이 지역 함수를 미리 정의하고 호출하게 되면 문제 없이 실행되는 것을 알 수 있다.
매개변수의 기본값
코틀린에서는 매개변수에 기본값을 지정해줄 수 있다. 매개변수에 기본값을 지정하게 되면 함수 호출 시 해당 매개변수의 인자를 전달받지 않았을 때 기본값을 인자로 함수를 호출하게 된다. 이 때 기본값을 지정한 매개변수들은 기본값이 없는 매개변수들 뒤에 와야한다.
fun add(a: Int, b: Int = 3): Int{
return a + b
}
fun main() {
var a = add(2, 3)
var b = add(5)
println("$a $b")
}
/*
* 실행결과
* 5 8
*/
가변 인자
함수를 정의하다보면 인자의 개수를 정하기 어려운 경우가 있다. 이런 경우를 위해 코틀린에서는 가변 인자 기능을 제공한다. 가변 인자를 선언하기 위해서는 vararg
라는 키워드를 선언해야한다.
fun sum(vararg number: Int): Int{
var ret = 0
for (num in number){
ret += num
}
return ret
}
fun main() {
var a = sum(1, 2, 3)
var b = sum(1, 2, 3, 4, 5)
println("$a $b")
}
/*
* 실행결과
* 6 15
*/
'Kotlin' 카테고리의 다른 글
[Kotlin] 조건문 (0) | 2020.06.15 |
---|---|
[Kotlin] 함수형 프로그래밍 (0) | 2020.06.09 |
[Kotlin] 비트 연산 (0) | 2020.06.08 |
[Kotlin] 자료형의 변환 (0) | 2020.06.03 |
[Kotlin] Null vs Non-Null (0) | 2020.05.01 |