본문 바로가기
security/코틀린

Kotlin - 04. Function

by aristia 2020. 7. 23.

04. Function

 

-------------------------------------------------------------------------

<함수> 


- 어떤 input을 넣어주면 어떤 output이 나오는 것

 

<함수 선언하는 방법>

fun 함수명 (변수명 : 타입, 변수명 : 타입....) : 반환형 {

함수 내용
return 반환 값

}

-------------------------------------------------------------------------

 

이렇게 함수를 선언하고 main 함수에서 출력을 해보았다.

그랬더니 15라는 숫자가 나왔다.

 

함수가 돌아가는 과정을 자세히 알기 위해서 println을 중간에 넣었다.

그랬더니 다음과 같이 화면에 출력되는 것을 확인할 수 있다.

 

이렇게 명시적으로 first와 second를 적어줄 수 도 있다. 

만약에 적어주지 않는다면 암묵적으로 처음 나온것을 first로 생각한다는 것이다.

 

 

-------------------------------------------------------------------------

 

<디폴트 값을 갖는 함수 만들기>

 

이 때 second의 디폴트 값은 5로 지정해주었다.

여기서 반환값을 적어주지 않아서 에러가 발생하는 것을 확인할 수 있다.

 

 

그래서 이렇게 반환값을 적어준다.

이 때, result4에서는 second 인수에 디폴트로 20을 적어주었다.
그리고 result5에서는 첫번째 인자만 10으로 주었다.

 

그럼 result4의 결과로 30이 나오는 것을 확인할 수 있다.

한편, result5의 값은 15로 나온다.

 

-------------------------------------------------------------------------

 

<반환값을 갖지 않는 함수>

 

반환값이 없는 함수이기 때문에 여기서는 return을 쓰지 않는다.
대신에 바로 println을 사용해서 출력을 해준다.

Unit은 이 함수가 아무것도 return 하지 않겠다는 것을 의미한다.

 

Unit은 생략이 가능하다는 특징이 있다.
에러가 나지 않는다는 것을 볼 수 있다.

 

main 함수에서 사용할 때는 println을 사용하는 것이 아니라
printPlus를 사용한다.

 

결과는 다음과 같이 나온다.

-------------------------------------------------------------------------

 

<간단하게 함수를 선언하는 방법>

 

반환 타입이나 대괄호{}를 사용하지 않아도 다음과 같이 선언할 수 있다.

 

다음과 같이 함수를 이용하고 출력을 하면

 

50 + 50의 결과인 100이 출력이 된다.

 

-------------------------------------------------------------------------

 

<가변 인자를 갖는 함수를 선언하는 방법>

이 때 vararg를 쓴다.
그러면 first, second라고 굳이 적어주지 않아도 가변적으로 이용이 가능하다.

for문을 이용해서 전체를 출력하게 해준다.

 

이렇게 1, 2, 3 / 100 을 출력하게 해준다. 
여기서 반환형을 쓰지 않았기 때문에 println 없이 그냥 함수명을 쓰면 된다.

출력하면 다음과 같이 나온다.

 

-------------------------------------------------------------------------

 

<내부 함수>

함수 안에 함수를 사용하는 것을 의미한다.

 

다른 함수와 사용방법이 같다.

 

출력하면 다음과 같이 결과가 나온다.

'security > 코틀린' 카테고리의 다른 글

Kotlin - 06. 배열  (0) 2020.07.24
Kotlin - 05. 제어 흐름  (0) 2020.07.24
Kotlin - 03. Practice  (0) 2020.07.23
Kotlin - 02. 타입(자료형)  (0) 2020.07.23
Kotlin - 01. 변수  (0) 2020.07.23

댓글