본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 06] 함수

작은 프로그램의 일종인, 함수

 

 

맨 처음 Hello, World를 배울때 나왔던 main() 함수를 기억하는데, 이제는 본격적인 함수 fun에 대해서 알아볼 예정이다.

 

 


 

[ 함수 ]

 

fun 함수명(p1:타입1, p2:타입2, p3:타입3 ...): 반환타입 {
	// 코드
    return result
}

// 한 줄로 나타낼 수 있는 코드라면?
fun 함수명(p1:타입1, p2:타입2, p3:타입3 ...): 반환타입 = 코드

 

- 함수에 전달할 파라미터를 작성

- 함수 시그니처 : 함수명 / 파라미터 / 반환타입을 합쳐 이르는 말

- 파라미터의 개수와 각각의 타입만 시그니처를 구분할 때 쓰이며, 타입 순서는 고려되지 않음

 

 

ex)

fun cal(x:Int, y:Int):Int{
	println("계산 시작")
	return x*y
}

fun main(){
	val r = cal(5,12) // cal 함수를 호출
    println(r) // 출력 결과 : 계산 시작 /n 60
}

 

 


 

함수를 왜 사용할까?

 

위의 예시만 보아도 함수를 왜 사용하는지는 바로 알 수 있을 것이다. 함수는 이미 적혀져 있는 코드를 실행하고 결과값을 가져온다는 것을 줄여 쓴 것이기 때문에 프로그래밍에서는 가장 기본적이고 단순화하는 도구이자 재사용이 가능한 도구가 되기 때문이다.

이전에 배웠던 print / println 모두 출력을 하도록 코틀린에서 기본적으로 제공하는 표준 라이브러리 함수 이기 때문에 우리가 가져다 쓰더라도 알아서 출력해주게 되는 것이다.

 

함수의 반환 타입을 적어주고 있지만 의미 있는 결과를 제공하지 않는 함수의 반환 타입은 Unit으로 정의하며 이는 생략 가능하다.

 

* 의미 있는 결과를 제공하지 않는다는 것은?

이는 예를 들어 print로만 이루어진 함수가 있다면? 이는 데이터를 반환하지 않는다. 이와 같은 함수를 의미 있는 결과를 제공하지 않는다고 말할 수 있으며, Unit 타입이 되는 것이다.

따라서 main() 함수도 의미 Unit 타입이라고 할 수 있다.

 

 


 

그렇다면 함수는 타입을 추론해 주지 않는 것일까?

 

코틀린은 함수도 데이터 추론을 해준다. 다만, 식 본문의 반환 타입만 추론한다는 점을 유의해야 한다. 함수의 반환 타입을 명시하지 않으면, 함수의 반환 타입이 Unit이라고 지정한 것과 같게 되며 함수의 반환 타입을 추론해준다. 

 

 


 

[ 오늘의 학습 소감 ]

 

오늘은 함수에 대해 학습하였는데, 조금 헷갈리는 부분이 있었다. '식 본문의 반환 타입만 추론한다' 라는 말. 이는 파라미터의 타입은 반드시 명시해 주어야 한다. 라고 인식하고 학습을 하였는데, 검색해 보았을 때 내 인식이 맞는 것 같기는 하지만 아직 확신할 수는 없어 아직 블로깅에 추가하지는 않았다. (확신하게 된다면 작성할 예정입니다!) 아직 초반인데... 그래도 궁금한 것이 있다는 것은 내가 학습을 잘 하고 있다는 의미로 받아들일 수 있기 때문에 뿌듯한 학습이었다. 라고 생각할 수 있는 것일지도?

 

 

'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글

[Atomic 08] 문자열 템플릿  (0) 2024.01.07
[Atomic 07] if 식  (0) 2024.01.06
[Atomic 05] 데이터 타입  (0) 2024.01.04
[Atomic 04] var & val  (0) 2024.01.03
[Atomic 03] Hello, World!  (3) 2024.01.02