오 에 아 자 두번째는 흐름 제어입니다. 흠흠
두번째 블로그답게 이모티콘 👍사용법을 알아왔어요!
윈도우는 (윈도우키 + ;) 이더군요!!
바로 시작할게요!!
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
을 쓸 거야????? 확실해????? 널포인터 익셉션 떠도 나 책임 안진다????
는 의미에서 ?라고 생각하시면 될 것 같네요!
근데 뭐 자세한건 사실 졸려서 그만 쓸래요. 다음 언젠가 포스팅에서 보기를...^^;
이모지 사용법 : https://buffer.com/library/emojis-keyboard-shortcut-mac-windows/
코틀린 Language Guide : https://kotlinlang.org/docs/reference/basic-syntax.html