본문 바로가기

카테고리 없음

[Kotlin] 식이 본문 vs 블럭이 본문

식이 본문인 함수

중괄호 대신 =(등호)를 식에 붙이기, return 제거

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

 

+ 블록의 마지막 식이 블록의 결과 

// if 사용하기
fun eval(e: Expr): Int =
	if (e in Num) {
		e.value
	} else if (e is Sum) {
		eval(e.right) + eval(e.left)
	} else {
		throw java.lang.IllegalArgumentException("Unknown expression")
	}

 

// when 사용하기
fun eval(e: Expr): Int =
	when (e) {
		is Num ->
			e.value
		is Sum ->
			eval(e.right) + eval(e.left)
		else ->
			throw java.lang.IllegalArgumentException("Unknown expression")
	}

블럭이 본문인 함수

본문이 중괄호에 둘러싸인 함수, return 필요

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

 

 

+ 블록의 마지막 식이 블록의 결과 

내부에 return 필요

fun eval(e: Expr): Int {
	if (e is Num) {
		val n = e as Num
		return n.value
	}
	if (e is Sum) {
		return eval(e.right) + eval(e.left)
	}
	throw IllegalArgumentException("Unknown expression")
}