쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로젝트회고
  • DataBinding
  • mvvm
  • Room
  • 코드업100제
  • 변수
  • ViewModel
  • 배열
  • 컴포즈
  • Adapter
  • workmanager
  • 자료구조
  • 백준
  • 객체지향
  • 자바
  • 코틀린코테
  • 코틀린
  • 리사이클러뷰
  • 기초100제
  • Kotlin
  • livedata
  • 코테
  • 메소드
  • 알고리즘
  • Jetpack
  • AAC
  • compose
  • Android
  • 코딩테스트
  • 상속

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

Kotlin/Basic

[Kotlin/Basic] 코틀린에서의 함수

2022. 8. 14. 23:59

1. 함수 선언 문법

보통 코틀린에서의 함수 선언은 다음과 같이 구현할 수 있다.

fun max5(a : Int, b : Int) : Int {
    if(a>b){
        return a
    }
    else {
        return b
    }
}

a, b를 매개변수로 받아 더 큰 숫자를 반환하는 함수이다.

먼저, 자바하고와의 차이는 public을 생략할 수 있고, 매개변수는 : 타입으로 적어준다.

하지만 위의 코드에서 더욱 코드를 간결하게 할 수 있다.

fun max(a: Int, b:Int) = if(a>b) a else b

함수의 전체 중괄호를 빼고 하나의 값이기 때문에 '='으로 표현이 가능하다.

또한, 반환타입이 모두 int이고, '='을 사용하기 때문에 Int는 생략이 가능하다.

 

주의할 점은 block { } 을 사용할 때 반환타입이 Unit이 아니면 명시적으로 꼭 작성해주어야한다!!!

2. default parameter

자바에서 함수를 사용할 때 함수안에 사용되는 파라미터들을 자주 사용하게 되면

함수를 오버로딩하여 사용할 때가 많았다. 

자바에서는 이 때 똑같은 함수를 만들어주어야 했지만 코틀린에서는 기본값 파라미터가 존재하기 때문에 이 문제를 해결할 수 있다.

fun repeat(str : String, num : Int, useNewLine: Boolean){
    for(i in 1..num){
        if(useNewLine){
            println(str)
        }else{
            print(str)
        }
    }
}

문자열을 몇번 반복하고, 칸을 넘겨서 출력할 것인지 판단하는 함수이다.

하지만 이 때, 내가 3번과 칸을 띄고 출력하는 것만 한다고 가정했을 때 3과 true를 계속 반복하여 입력하게 될 것이다.

오버로딩하여 메소드를 하나 더 만들어주어야 했지만 코틀린은 다음과 같이 바꿔줄 수 있다.

fun repeat1(
    str : String,
    num : Int = 3,
    useNewLine : Boolean = true
){
    for(i in 1..num){
        if(useNewLine){
            println(str)
        }else{
            print(str)
        }
    }
}

3과 true가 자주 사용되는 함수여서 기본값을 설정해주었고, 따라서 밖에서 파라미터를 넣어주지 않으면 기본값을 사용하여 실행한다.

기본값으로 사용하지 않고 싶으면 다음과 같이 파라미터를 다 적어주면 된다.

repeat1("hi", 4, false)

하지만 3은 그대로 사용하고 싶고, ussNewLine만 false를 변경하고 싶을 땐 어떻게 하면 될까?

3. named argument

이름을 지어주면 이 궁금증을 해결할 수 있다!!

repeat1("hi", useNewLine = false)

위의 기본값 3은 그대로 사용하고 useNewLine만 false로 변경해주고 싶을 때는 위의 코드와 같이 해당 변수 이름을 같이 적어주면 해결할 수 있다.

4. 같은 타입의 여러 파라미터 받기(가변인자)

자바에서는 ...을 사용했지만 코틀린에서는 vararg을 사용한다.

fun printAll(vararg strings : String){
    for(str in strings){
        println(str)
    }
}

대신 여기서 주의할 점이 배열을 바로 넣는 대신 스프레드 연산자(*)을 붙여주어야한다!

val array = arrayOf("A", "B", "C")
printAll(*array)

 

 

 

GitHub - SsongSik/Kotlin_Java_Practice: Practice kotlin grammar compared to Kotlin and Java.

Practice kotlin grammar compared to Kotlin and Java. - GitHub - SsongSik/Kotlin_Java_Practice: Practice kotlin grammar compared to Kotlin and Java.

github.com

 

저작자표시 (새창열림)

'Kotlin > Basic' 카테고리의 다른 글

[Kotlin/Basic] 코틀린에서의 상속  (0) 2022.08.22
[Kotlin/Basic] 코틀린에서의 클래스  (0) 2022.08.15
[Kotlin/Basic] 코틀린에서의 예외처리  (0) 2022.08.13
[Kotlin/Basic] 코틀린에서의 반복문  (0) 2022.07.27
[Kotlin/Basic] 코틀린에서의 제어문  (0) 2022.07.25
    'Kotlin/Basic' 카테고리의 다른 글
    • [Kotlin/Basic] 코틀린에서의 상속
    • [Kotlin/Basic] 코틀린에서의 클래스
    • [Kotlin/Basic] 코틀린에서의 예외처리
    • [Kotlin/Basic] 코틀린에서의 반복문
    쏭식
    쏭식

    티스토리툴바