코틀린의 공식홈페이지에 있는 기본 문법들을 공부해보자.
코틀린의 공식홈페이지 주소
https://kotlinlang.org/docs/reference/basic-syntax.html
fun sum(a: Int, b: Int): Int {
return a + b
}
fun sum2(a: Int, b: Int) = a + b
val a : Int = 1 // val는 한 번만 값을 할당 (final)
var b : Int = 1 // var는 여러번 값 할당 가능 (가변)
val b = 2 // 우측의 대입값을 보고 Int 타입으로 참조.
var x = 5 // 여러번 재할당 할 수 있는 변수는 var로.
x += 1
val c: Int
c = 3 // 이런 경우의 변수 선언은 타입을 static하게 정해서 사용해야함.
fun string_template() {
var a = 1
val s1 = "a is $a"
println(s1)
a = 2 // 변수 a는 문자열안에서 $기호를 붙여 값을 대입하여 사용할 수 있다.
val s2 = "${s1.replace("is", "was")}, but now is $a" //${} 기호 안에서 메소드 접근 가능.
println(s2)
}
fun parseInt2(str: String): Int? { // str에 정수가 없다면 Null을 반환하는 함수
val numberList = listOf("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
if(numberList.contains(str)){
return parseInt(str)
} else{
return null
}
}
// Null 체크는 보통 언어처럼 == / != 연산자를 사용하여 처리
if(x != null && y != null) {
println(x * y)
} else {
println("'$arg1' or '$arg2' is not a number")
}
if(x == null) {
println("Wrong number format in arg1: '$arg1'")
return
}
fun maxOf(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
fun maxf2(a: Int, b: Int) = if(a > b) a else b // 생소하지만 코드수가 차이나는것을 볼 수 있다.
val items = listOf("apple", "banana", "kiwifruit")
// 반환하는 값은 indices경우와 같다.
for (item in items) {
println(item)
}
// size와는 다르게 0 .. LastIndex(2)까지 반환 (0부터 시작)
for (index in items.indices) {
println("item at $index is ${items[index]}")
}
// size는 1부터 시작하는 갯수라서 인덱스 관련값을 구할때 -1하는 경우와
// 밑에처럼 until을 사용하는데 indices 사용을 권장한다.
for (index in 0 until items.size) {
println("item at $index is ${items[index]}")
}
for (index in 0..(items.size-1)) {
println("item at $index is ${items[index]}")
}
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}