computer_study

[Kotlin] 03. 함수 정의하기 본문

스터디/코틀린 완벽 가이드

[Kotlin] 03. 함수 정의하기

knowable 2022. 5. 19. 22:34

코틀린 함수의 구조

kotlin

import kotlin.math.PI

fun circleArea(radius : Double) : Double {
    return PI*radius*radius
}
// 단일 식으로만 구현할 수 있다면 중괄호 생략 가능

fun circleArea2(radius: Double): Double = PI*radius*radius
fun circleArea3(radius: Double) = { PI*radius*radius }



fun main(){
    print("Enter radius: ")
    val radius = readLine()!!.toDouble() // !!이 붙는 이유 : 이 변수는 null이 아니다를 의미
    println("Circle area: ${circleArea(radius)}")
}

Java

import static java.lang.Math.PI;
import java.util.Scanner;

private Double circleArea(Double radius){
    return PI*radius*radius;
}

public void main(){
    System.out.println("Enter radius: ");
    Scanner scan = new Scanner(System.in);
    double radius = scan.nextDouble();
    System.out.println("Circle area: " + circleArea(radius));
}
  • 코틀린 함수 파라미터는 무조건 불변이기에 함수 본문에서 파라미터 값을 변경하면 컴파일 오류가 발생한다.
  • 파라미터 앞에 val, var는 표시할 수 없다.

 

조건문

  • 코틀린은 3항 연산자가 없다
  • 다만 if를 식으로 사용할 수 있다. ( val tmp = if (a > b) a )
  • 자바 switch문 처럼 코틀린 when을 사용할 수 있다.
fun numberDescription(n: Int, max: Int = 100): String = when(n){
    0 -> "Zero"
    1, 2, 3 -> "Small"
    in 4..9 -> "Medium"
    in 10..max -> "Large"
    !in Int.MIN_VALUE until 0 -> "Negative"
    else -> "Huge"
}

 

예외처리

fun parseIntNumber(s: String): Int{
    var num = 0
    
    if (s.length !in 1..31) throw NumberFormatException("Not a number: $s")
    
    for(c in s){
        if(c !in '0'..'1') throws NumberFormatException("Not a number: $s")
        num = num*2 + (c- '0')
    }
    return num
}
  • 코틀린 예외 처리 단계는 기본적으로 자바와 같다.
  • new 구문을 사용하지 않기에, 일반 함수 호출처럼 호출한다.
Comments