본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 14] 식과 문

프로그래밍 언어에서 가장 작은 코드 조각인
식과 문

 

앞에서 잠깐씩 식과 문이 언급되기는 했지만, 이에 대한 설명 없이 지나갔었는데,

이번 아톰에서는 식과 문을 다룰 예정이다.

식과 문이 무엇이고 이가 어떻게 사용되는지 알아보자

 

 


 

[ 문 : statement ]

 

문(statement)

: 효과를 발생시키지만 결과를 내놓지 않음

: 결과가 없기에 필요있으려면 주변의 상태를 변경

: 즉, 부수 효과(side effect)를 얻기 위해 문을 사용

 

- A Statement chagnes state : 문은 상태를 변경한다.

 

 

fun main(){
	val f = for(i in 0...3){} // for는 문
}

 

- for는 식이 아닌 문으로 결과값을 만들어내지 않기 때문에 for문을 다른 변수에 대입할 수 없음

 

 


 

[ 식 : expression ]

 

식(expression)

: 항상 결과를 만듦

: 'express'는 힘을 주거나 짜내 무언가를 배출한다는 의미로 결과를 도출함을 의미

: 식은 다른 식의 일부분이 되거나 변수에 대입할 수 없는 최상위 요소

: 모든 함수 호출 코드는 식

 

- An expression expresses : 식은 값을 짜낸다.

 

 

fun unitFun() = Unit

fun main(){
	print(unitFun) // 출력 결과 : kotlin.Unit
    val e:Unit = print(45) // 출력 결과 : 45
    print(e) // 출력 결과 : kotlin.Unit
    
    val e1 = if(1<2){
    	val a = 10 // 영역 안에 선언되었기 때문에 영역을 벗어나면 a도 버려짐
        a+20
    }
    
    val e2 = if('x' < 'y'){
		print("x<y")    
    }else{
    	print("x>y")
    }
    // 위 if 문 출력 결과 : x<y
    print(e2) // 출력 결과 : 30
    print(e3) // 출력 결과 : kotlin.Unit
}

 

- 부수 효과를 목적으로 호출되더라도 여전히 함수 호출 결과를 변수에 대입할 수 있음

- if / 증감 연산자도 식

 

 


 

[ 오늘의 학습 소감 ]

 

오늘은 식과 문에 대한 설명과 예제를 접해보았는데, 이전과는 달리 오늘은 코드를 보는 것 보다는 글을 봐야 이해할 수 있는 아톰이었다. 물론 글을 명확히 이해했을 때 코드가 주는 도움도 있었지만, 그건 글을 이해한 다음,,, 오늘의 핵심은 식과 문이 정확히 무엇이고 무엇을 해주는지를 이해했다면 학습에 많은 도움을 받았을 것이라고 생각했다.