밍경송의 E.B

Android <2> Kotlin Functions - (Almost) Everything has a value! 본문

GDSC/Android

Android <2> Kotlin Functions - (Almost) Everything has a value!

m_gyxxmi 2023. 10. 7. 02:08

안녕하십가..! 이번 시간에는 2강에서 다루기 시작한 코틀린의 '함수'에 대해 다뤄보는 시간을 간단하게 가져보겠읍니다 !

내일 엠티라서 부랴부랴 과제들을 청산하고 있는데 시간이 늦어서 너무.. 자고싶엉ㅛ..이제 엠티 못가겄다..


자 먼저 코틀린의 아주 기본적인 함수 예제를 들여다봅시다. 

fun main(args: Array<String>) {
	println("Hello, I'm smk!")
    }

: fun 이라는 키워드 뒤에 함수의 이름을 적어서 함수를 생성할 수 있고, 함수 이름 옆의 ( )에 함수의 인자를 넣어줌으로써 함수를 완성할 수 있습니다.

이때 인자에 대한 부분은 필수적인 것은 아닙니다! 뒤에서 자세한 설명을 하도록 하겠숩니다.

+ { } 안에는 함수의 내용이 들어가는 것은 역시,, 다른 언어와 동일합니다.


 

그렇다면 Kotlin의 함수를 배우면서 가장 주목해야 할 것은 무엇일까요?

Function - (Almost) everything has a value !

: 코틀린의 함수 중 거의 모든 것는 값(return value)이 존재한다! 

ㄴ여기서 값이 존재한다는 의미Statement(문)이 아니라  Expression(식)이라는 의미이기도 합니다. 


여러분은 Statement(문)와 Expression(식)의 차이가 무엇인지 아시나요? 저는 몰랐습니다.... 간단히 정리해보겠숩다.

 

Statement(문)은 value(값)을 변수의 상태를 변경해주는 등의 부수적인 효과를 주는, 결괏값이 존재하지 않는 코드를 의미합니다. 대표적인 Statement에는 for, (do) while 루프들이 존재하고, 이들은 식으로 나타낼 수 없답니다.

우리가 흔히 C 등 다른 언어를 배울 때, if문, while문 .. 이런 식의 이름으로 개념을 배웠을텐데요. 그걸 생각하면 된답니다.

 

 

: 여기서 포인트!

위의 문장에서 왜 (Almost)라는 표현을 썼는지 이제 캐치하셨나요? 바로 for, while 루프가 그 반례이기 때문입니다. 강의에 나와있는 문장을 인용해와봤으니 읽어보시죠!

"Loops are exceptions to "everything has a value." There's no sensible value for for loops or while loops, so they do not have values. If you try to assign a loop's value to something, the compiler gives an error."

 

--

 

Expression(식)결괏값이 존재하는 코드로, 이 결괏값을 변수에 대입할 수도, 다른 식의 일부로 사용할 수도 있습니다. Kotlin에서는 위에서 다룬 Loop들을 제외한 모든 함수가 Expression이라고 할 수 있습니다.

 

 

강의에서 예제를 하나 가져왔숩니다. 

val temperature = 10
val isHot = if (temperature > 50) true else false
println(isHot)

isHot이라는 변수에, if식에서 얻은 결과값을 대입하고 이를 프린트하고 있네요.

이제는 위 예제가 if문이 아니라 if식이라는 거 아시겠조,,!

 


 

: 여기서 궁금증 1가지.

어랏 위에 예제의 main() 함수는 반환되는 값이 없는데 이건 뭘까???????????????

fun main(args: Array<String>) {
	println("Hello, I'm smk!")
    }

: 예제의 main() 함수의 경우 return문 자체가 안보이는데요. 제가 틀린 게 아닙니다. 이거 돌리면 print문에 쓴 거 고대로 나와요

 

이렇게 return문이 보이지 않는 경우, 사실 함수는 Unit(kotlin.Unit)을 리턴하고 있지만, Unit의 경우는 생략이 가능하기 때문에 명시적으로 드러나지 않습니다! 

 

>>그러니까 중요한 것은 return문이 안 보인다고 return값이 없는 것이 아니라, return 값이 Unit이라 생략된 것이라는 점!

이해가시죠?! 네에!

 

 

 

 

&강의

https://developer.android.com/courses/pathways/android-development-with-kotlin-2?hl=ko 

 

2강: 함수  |  Android 개발자  |  Android Developers

Kotlin 프로그램을 만들고 매개변수의 기본값, 필터, 람다, 컴팩트 함수를 비롯하여 Kotlin의 함수에 관해 알아봅니다.

developer.android.com

 

오늘은 시간관계상 배운 내용을 모두 다루지 못했숩니다.. 최대하 빨리 이어서 내용 보강을 하도록 하겠숩니다 하트뼝뼝 해피 한글날~~