본문 바로가기

Kotlin

[Kotlin] 03. 타입추론과 함수

안녕하세요 오늘의 포스팅은 <타입추론과 함수> 입니다

 

<타입추론>

우선 타입추론에 대해 이야기를 해보도록 하겠습니다

타입추론(type inference)이란 변수나 함수들을 선언할 때 혹은 연산이 이루어질 때 자료형을 코드에 명시하지 않아도

코틀린이 자동으로 자료형을 추론해주는 기능입니다

 

앞의 포스팅을 보시면 예시 중

val stringValue = "문자열을 할당해볼까요?" 에서는 :String 이라는 자료형을 생략해서 나타낸 것을 확인하실 수 있습니다

이는 변수가 선언될 때 할당된 값의 형태로 해당 변수가 어떤 자료형을 가지는지 추론이 가능하기 때문입니다!

 

기본 자료형들도 선언 시 값을 할당만 해준다면 대부분 자료형을 명시할 필요가 없는데요

자료형 없이 값을 할당한다면 어떤 자료형으로 지정될까요?

 

var a  = 1234 // 일반 정수형 리터럴을 할당하면 Int로 추론
var b = 1234L // Long으로 추론

var c = 12.34 // 일반 실수형은 Double로 추론
var d = 12.45f // f가 붙은 실수형 리터럴은 Float형으로 추론

var e = true // boolean형으로 추론
var f = 'c' // char형으로 추론

 

위와 같이 할당된 값에 따라서 타입이 추론됩니다

(16진수와 2진수는 Int형으로 추론됩니다)

 

따라서 반드시 특정한 자료형으로 지정해야하는 상황이 아니라면 대부분은 코틀린의 타입추론 기능을 이용하여 코드량을 줄일 수 있습니다!

 

 

 

<함수>

다음으로 함수에 대해 알아보도록 하겠습니다

'함수' 는 특정한 동작을 하거나 원하는 결과값을 연산하는데 사용하는 기능입니다

기본적으로 코드를 짜는데 사용되는 main()이나 println()과 같은 것들도 모두 함수입니다

 

간단하게 3개의 Int 정수를 더하는 함수를 만들어보도록 하겠습니다

함수는 function의 준말인 fun으로 시작합니다

 

fun main() {
	println(add(5,6,7))
    // 출력: 18
}

fun add(a:Int, b:Int, c:Int): Int {
	return a+b+c
}

 

위 함수에서 a:Int, b:Int, c:Int는 함수가 받아야 할 Int 정수값 a, b, c를 의미합니다

그리고 괄호 밖에 있는 Int는 반환값의 자료형을 의미합니다 이를 반환형이라고 합니다

정수를 더했으니 당연히 반환값도 정수가 나와야겠죠?

(만약 반환값이 없다면 생략해도 무방합니다)

 

그리고 중괄호 안에는 함수가 해야할 구문을 적어줍니다

세 정수를 더하는 함수였으니 받은 값 a, b, c를 모두 더해서 리턴을 해주면 됩니다

함수 안에서 return은 뒤에 오는 값을 반환하는 키워드로 return이 발생한다면 함수의 중간이더라도

값을 반환하고 함수를 종료하게 됩니다!

 

이렇게 만든 함수를 main 안에서 add(5,6,7)의 값을 출력하여 사용할 수 있습니다

그러면 5+6+7이 실행되어 add 함수의 결과값인 18을 반환받아 출력됩니다

 

 

 

그런데 이 함수는 복잡한 기능을 하는 함수가 아니고 a,b,c를 단순히 더해서 반환하는 역할만 하는데요

이럴때는 함수를 좀 더 간단하게 표현할 수 있도록 단일 표현식 함수(single-expression function)을 사용할 수 있습니다

 

위에서 만든 함수를 변수에 결과값을 할당하듯 아래와 같이 식을 만들 수 있습니다

 

fun add(a:Int, b:Int, c:Int) = a + b + c

 

또한 단일 표현식 함수에서는 반환형의 타입추론이 가능하므로 반환형을 생략할 수 있습니다

 

 

 

코틀린에서 함수는 내부적으로 기능을 가진 형태이지만 외부에서 볼 때는 *파라미터를 넣는다는 점 외에는

자료형이 결정된 변수라는 개념으로 접근하는 것이 좋습니다!

 

*파라미터(parameter)란 매개변수로도 불리며 함수 등에 인풋으로 제공되는 데이터를 의미합니다

위 함수에서는 a, b, c가 파라미터가 되겠죠?

 

 

오늘의 포스팅 <타입추론과 함수>는 여기서 마치도록 하겠습니다

다음 포스팅에서 만나요!

 

 

 

 

*위 글은 유튜브 테크과학! DeMo님의 강좌를 참고하여 작성하였습니다