코틀린 배워보자 Kotlin! [2] 조건, 반복, 선택, 널체크

달의꿈·2020년 6월 11일
0

오 에 아 자 두번째는 흐름 제어입니다. 흠흠
두번째 블로그답게 이모티콘 👍사용법을 알아왔어요!
윈도우는 (윈도우키 + ;) 이더군요!!

바로 시작할게요!!

if문 🤣

if문은 다른 언어와 같이 if statement이지만, 더 정확히는 if expression(표현식)이라고 부릅니다. 이 의미는

😨 if 문 자체가 하나의 결과를 반환한다!

는 의미입니다. 때문에 다음과 같이 우리가 기존에 그냥 흐름제어의 통로 역할을 하는 것뿐만 아니라

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

곧바로 할당하는 것두 가능합니다!!!

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

때문에 java나 c에서는 삼항연산자 ?:가 있었던 것에 반해, kotlin에서는 이 연산자가 없고 if문이 대체합니다. 특히, if문에서 마지막 표현식이 반환값이 됩니다. 즉,

fun maxOf(a: Int, b: Int) 
    = if (a > b) {
    	println("a다 짱크지롱 에벨레레레레레")
        a
    } else {
    	println("응 a가 더 안커")
        b
    }

의 형태도 무난쓰하게 된다는 것이져!
오호. 쫌 편리하군여.

for문 😋

for문은 java, c에서 for문과 같다기보다는 foreach문으로 생각하는 것이 더 편한데요, iterator을 제공하는 것들을 처리할 수 있슴다!

iterator은 쉽게 말하면 다음이 있는 것들이에요. 대표적으로

1..10

은 1부터 10까지의 숫자가 들어간 배열인데, 이것의 iterator은 1, 2, 3, ..., 10을 순서대로 읽어드릴 수 있게 해줍니다!!

머 iterator을 모르겠다면 일단 여기서는 그냥 형태를 암기해버리면

for (i in 1..3) {
	println(i)
}

은 1부터 3까지의 숫자를 1, 2, 3 순대로 차례대로 출력한다는 의미이므로
[출력]

1
2
3

가 되지용. 직접 배열(리스트)를 만들어서

val items = listOf("하암", "배", "고프다")
for (item in items) {
	println(item)
}

로 해보리면 순서대로

하암

고프다

가 출력됩니다. 그런데 지금은 밤이라서 야식은 금물이에요 😥 그런데 콜라는 마시려구요(??????????????)

when문 🤗

when문은 switch문을 대신해서 만들어졌는데요, 사실 스위치문보다 우리가 보기에는 보기 편하고 짧긴 합니다. 잘 만든거같아요;;

fun whoAreYou(you: Any): String
    = when (you) {
    	is Int -> "너님은 Int이군여"
        3.14, 3.141, 3.1415 -> "너님은 pi이군여"
        a..z -> "너님은 소문자이군여"
        !is String -> "너님은 string도 아니네여"
        else -> "????? 그럼 뭔데?"
    }

아, 그리고 when문도 expression이기 때문에 결과를 반환합니다. 그래서 위처럼 대입할 때 쓰일 수 있었던 것이져!!

뭐... 이정도면 충분히 설명이 잘 되었다고 생각하여(사실 귀찮지??) 바로 다음으로 넘어가겠습니다!

while문 🙄

while문은 기존의 while문과 똑같습니다. 사실 갠적으로 while문 별로 안 좋아해서 길게 쓰지 말아야지(???)

fun sumFromOneTo(num: Int) {
    var i: Int = num
    var sum: Int = 0
    while (i > 0) {
    	sum += i--
    }
    println(sum)
}

이제 조금 다른 부분으로 넘어가서...

null체크 😅

java 등에서 조건에 부합하지 않는 경우 null로 변수값을 땡처리(?)하는 경우가 있는데, 이런 방법은 짱핵 편하지만 이거를 계속 하다보면

NullPointerException

java 쓰다보면 자주 보이져??^^ 망할놈... null인 변수에서 뭔가를 꺼내오고자 할 때

🙄 네? 이놈은 비어있는데요(null)?

하고 꽥 죽어버리는 오류이져. 그래서 코틀린은 이런 경우를 원천 차단하기 위해 null이 가능한 타입과 불가능한 타입을 구분해서 기록합니다!
기본적으로

Int
Double
Long
String
등

의 타입 경우는 null을 애초에 할당할 수 없습니다! 그 예로

var a: String = "abc"
a = null //컴파일 오류

처럼 그냥 애초에 막아버립니다;; 아니, 그러면 그 유용한 null을 못쓰느냐?? 노노.. 명시적으로 null이 된다면 ?를 붙여줘서

var a: String? = "abc"
a = null //가능

으로 할 수 있죠!! ?를 붙인다는 것은

🤐 너 정말 null을 쓸 거야????? 확실해????? 널포인터 익셉션 떠도 나 책임 안진다????

는 의미에서 ?라고 생각하시면 될 것 같네요!
근데 뭐 자세한건 사실 졸려서 그만 쓸래요. 다음 언젠가 포스팅에서 보기를...^^;

Reference

이모지 사용법 : https://buffer.com/library/emojis-keyboard-shortcut-mac-windows/
코틀린 Language Guide : https://kotlinlang.org/docs/reference/basic-syntax.html

profile
Everything to me

0개의 댓글