fun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}
Go 같은 언어들은 에러를 반환하기도 하지만, 코틀린은 그냥 무시하고 실행된다. 실행되기는 하지만 좋은 코드는 아니다.
sum of -1 and 8 is 7
지역 변수
val은 읽기 전용이다.
val a: Int = 1 // 즉시 할당
val b = 2 // Int로 타입 추론
val c: Int // 나중에 값을 할당 하 ㄹ수도 있다.
c = 3
쓰기 전용 이므로 재 할당 할 경우 컴파일 실패한다.
var는 쓰기가 가능한 변수다.
var x = 5
x += 1
String 템플리트
var a = 1
// simple name in template:
val s1 = "a is $a"
a = 2
// arbitrary expression in template:
val s2 = "${s1.replace("is", "was")}, but now is $a"
null 검사
NullPointException은 프로그램 실행 중 발생하는 가장 흔한 오류 중 하나일 것이다. 가장 흔하면서, 프로그램 자체를 종료 시킬 수 있는 중요한 오류임에도, 전적으로 프로그래머가 책임져야 하는 부담이 있다. 코틀린은 null을 허용하지 않거나, null을 쓰더라도 안전하게 사용 할 수 있게 하고 있다.
코틀린에서 변수는 NotNull과 Nullable을 설정 할 수 있다. 일반적인 변수는 Null을 할당 할 수 없다. 아래 코드를 보자.
var temp: String = "abc"
temp = null
컴파일 하면 "Kotlin: Null can not be a value of a non-null type String" 에러가 발생한다. null을 허용하고 싶다면, ?표를 이용해야 한다.
var temp: String? ="abc"
temp = null
자동 타입변환
is연산자를 이용해서 타입(type)을 체크하고, 캐스팅까지 해준다.
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// if 문 안에서 obj는 자동으로 String으로 캐스팅된다.
return obj.length
}
// if 문 바깥에서는 여전히 Any 타입이다.
return null
}
아래와 같이 나타낼 수도 있다.
fun getStringLength(obj: Any): Int? {
if (obj !is String) return null
// obj는 자동으로 String로 캐스팅 된다.
return obj.length
}
for 루프문
fun main(args: Array<String>) {
val items = listOf("apple", "banana", "kiwi")
for (item in items) {
println(item)
}
}
혹은
val items = listOf("apple", "banana", "kiwi")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}
While 루프문
val items = listOf("apple", "banana", "kiwi")
var index = 0
while (index < items.size) {
println("item at $index is ${items[index]}")
index++
}
when
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
range
for (x in 1..5) {
print(x)
}
스텝 설정
for (x in 1..10 step 2) {
print(x)
}
for (x in 9 downTo 0 step 3) {
print(x)
}
Collections
fun main(args: Array<String>) {
val items = listOf("apple", "banana", "kiwi")
for (item in items) {
println(item)
}
}
fun main(args: Array<String>) {
val items = setOf("apple", "banana", "kiwi")
when {
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}
}
Contents
패키지 정의
함수 정의
지역 변수
String 템플리트
null 검사
자동 타입변환
for 루프문
While 루프문
when
range
Collections
참고
Recent Posts
Archive Posts
Tags