본문 바로가기
Programming/Kotlin

[Kotlin] Kotiln 기본 강의 (2) - 함수

by 코딩의성지 2019. 10. 26.

안녕 ~~ 큰 프로젝트가 하나 끝나서 그런지 이렇게 글을 많이 쓸 수 있어서 좋다.

지난 Kotiln 강의에서 자료형과 변수에 대해 공부를 해보았다. ( 내가 내입으로 Kotlin 강의라고 얘기하니깐 조금 민망하다)

 

오늘은 함수에 대해 공부해보려고한다.

 

Java 를 사용하셨을 때는 class를 만들고 그안에 변수와 메서드를 작성했었는데, 이때 메서드가 함수 역할을 했었다.

Kotlin에서는 그냥 파일을 생성하고 그 안에 함수를 만들어서 쓰면 된다.

 

놀라운 사실 하나 알려주도록 하겠다. 여러분들은 이미 Kotlin 함수를 사용하실 수 있다. 

 

https://devkingdom.tistory.com/25 

 

[Kotlin] Kotlin 기본 강의 (1)

오늘도 Kotlin을 공부하면서 글을 쓴다. 오늘은 Kotlin 에서 사용하는 기본 문법에 대해 소개하려고한다. 1. 자료형 먼저 코틀린에서 제공하는 자료형을 알아보자. TYPE Bit Width Double 64 Float 32 Long 64 Int..

devkingdom.tistory.com

위의 링크를 들어가서 보면 우리는 저번에 main 함수를 작성해서 썼었다 !! ㅎㅎ

그럼 함수를 지난번에 써봤으니 오늘 강의는 끝..,,

는 장난이고 ㅎㅎㅎ 본격적으로 함수에 대해 알아보자.

 

 

함수

 

먼저 Kotlin의 함수 기본 구조에 대해 알아보자.

1
2
3
fun 함수명 (파라미터) : 리턴타입 {
   // 코드들
}
 

 

이렇게만 보면 아쉬우니 자바의 메소드와 비교하지 않을 수 없다 ! 아래는 자바의 메소드 구성이다.

1
2
3
리턴타입 메서드명 (파라미터 ) {
    // 코드들 ...
}
 

 

비슷하지만 살짝 다르다. 헷갈리지 않으셨으면 좋겠다.

 

예제를 한번 작성해보겠다. 

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
fun main(args : Array<String>) {
    //func1 함수 호출
    func1();
 
    //func2 함수 호출
    func2("출근""퇴근");
 
    //func3 함수 호출
    var returnFunc = func3();
}
 
fun func1() {
    println("func1 test");
}
 
fun func2(a: String, b : String) {
    println(a + "하기 싫다.");
    println(b + "하고 싶다.");
}
 
fun func3() : Int {
    var n1 = 100;
    println("n1 : ${n1}");
    return n1;
}
 

 

func1 함수는 단순히 문자열을 출력하는 함수이고,

func2 함수는 파라미터로 String 타입의 변수를 받아서 출력하는 함수이고,

func3 함수는 내부에서 정수 변수하나를 만들고 그걸 출력한 뒤에 그값을 출력하는 함수이다.

 

어렵지 않지만 일부러 다양한 방식으로 함수를 구현해봤다. 이걸 실행해보면

 

이렇게 결과를 얻을 수 있는 걸 볼 수 있다. 그런데 이정도만 알고가면 Java랑 별다를바가 없쥬~~~

 

ㅎㅎㅎ 주말이라서 조금 신나게 글쓰고 있다. 아무튼 Java랑 조금 차별되는 기능을 소개할까한다. func2 함수를 조금 고쳐보겠다.

 

1
2
3
4
5
6
7
8
9
10
fun main(args : Array<String>) {
    func2();
    func2("공부");
    func2("운동""게임");
}
 
fun func2(a: String = "출근", b : String = "퇴근") {
    println(a + "하기 싫다.");
    println(b + "하고 싶다.");
}
 

 

Kotlin 에서는 신기하게 파라미터에 default 값을 넣어서 함수를 만들 수 있다. 이걸 실행해보면 

 

요렇게 파라미터로 보내지 않은 값은 default 값이 채워져서 출력된다. 참 신기하다.

 

 

심지어 직접 파라미터에 값을 지정해주는 것도 가능하다.

1
2
3
4
fun main(args : Array<String>) {
    func2(a = "농구", b="축구");
    func2(b = "볼링");
}
 

 

 

 

아 그리고 java에서 return 값을 void 라고 적는 것처럼 Kotlin에서 이렇게 표현해도 된다.

1
2
3
fun func1() : Unit {
    println("func1 test");
}
 

 

또한 자바 처럼 overloading 이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fun overloadingFunc () {
    println("no param")   
}
 
fun overloadingFunc (a : Int) {
    println("param : ${a}")
}
 
fun overloadingFunc (a : Double) {
    println("param : ${a}")
}
 
fun overloadingFunc (a : Double, b : Int) {
    println("param : ${a}")
}
 

 

그리고 또 신기한거 하나 더 있다. ㅎㅎ 함수 안에 함수를 만드는 것도 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
fun main(args : Array<String>) {
   outFunc();
}
 
fun outFunc() {
    var a = "inFunc 호출";
    println("outFunc 호출");
    fun inFunc( a: String) {
        println(a);
    }
    inFunc(a);
}
 

 

 

outFunc 내부에 구현 된 inFunc는 outFunc 에서 밖에 쓸수 없다. 

 

오늘은 Kotlin 함수에 대해 알아 봤다. 포스팅하면서 드는 생각인데, Java 보다 편한 것같다는 생각이 든다. 앞으로 공부하다보면 이런 생각을 더 하겠지?

 

아무튼 오늘도 열심히 코딩하자~~~ 안녕~~~

 

반응형

댓글