본문 바로가기

소프트웨어/Kotlin

Java와는 다른 Kotlin만의 기본 문법 정리

1. String literal


val ben = """
사랑 다 비슷해 그래 다 비슷해
너는 다르길 바랬는데
넌 뭐가 미안해 왜 맨날 미안해
헤어지는 날조차 너는 이유를 몰라
이젠 180도 달라진
너의 표정 그 말투
너무 따뜻했던 눈빛 네 향기까지도
정말 너무나도 달라진
우리 사랑 또 추억
아직 그대로인데 난
이젠 180도 변해버린 지금 너와 나
"""

print(ben)

 

2. in 연산자


val num = arrayOf(100, 200, 300, 400)
pirntln("${200 in num}") // true
pirntln("${num.contains(200)}") // true
pirntln("${200 !in num}") // false
pirntln("${!num.contains(200)}") // false

 

3. 범위 연산자


val lowerAlpha = 'a'..'z'
val numberRange = 1..100
val isLower = 'd' in lowerAlpha
val isNumber = 101 in numberRange

for(i in 1..7) print(i) // 1234567
for(i in 'a'..'g') print(i) // abcdefgvar 

start = LocalDate.now()
val end = start..start.plusDays(15)
println(start.plusWeeks(1) in end) // true
println(end) // 2017-06-20..2017-07-05

 

4. Invoke 연산자

함수를 호출할 때는 이름에 괄호를 붙이는 표기 방법을 사용한다. 코틀린에서는 클래스의 인스턴스도 이런 방법으로 호출할 수 있다. 이때는 괄호(()) 연산자를 오버로딩한 invoke() 함수에 operator 키워드를 지정하여 해당 클래스에 정의하면 된다


class InvokeOperator(val makeMessage1: String) {
	operator fun invoke(makeMessage2: String) {
    	println("$makeMessage1 $makeMessage2!")
    }
}

// 사용
val instance1 = InvokeOperator("Learn")
instance1("Kotlin!")

 

5. 타입 확인 연산자(is, !is)

코틀린에서는 객체의 타입을 확인할 때 is 연산자를 사용한다. (JAVA의 instanceof) !is는 타입이 아닌지 검사


val b: String = "Learn kotlin!"
if (b is String) {
    println("String type")
}

 

6. when 표현식

when은 자바의 switch-case와 유사하지만 더 간결하고 기능도 많다. 검사할 조건이 많을 때는 if-else if 대신 when을 사용하면 편리하다. 또한 Enum 타입의 경우 null 상태도 체크하도록 warning을 띄워준다.


...
val start = 0
val end = 100
when (score) {
	in start..(end / 4) -> println("Excellent")
	50 -> println("Average")
	in start..end -> println("In range")
	else -> println("Out of range")
}

enum class MyEnum{
    State0
}
...
var myEnum:MyEnum? = MyEnum.State0
when(myEnum) {
	State0 -> print("State0")
	null -> print("null!")
}
// 혹은 아래처럼
when(myEnum) {
	State0 -> print("State0")
	else -> print("null!")
}

 

7. Unit

Unit(Kotlin) == Java(Void)


fun celsiusToFah(celsius: Int): Unit
{
	println(celsius * 1.8 + 32)
}

 

8. Nothing

Nothing을 반환하는 함수를 보면 이 함수가 예외를 생성하도록 설계된 함수임을 알 수 있다


fun fail(): Nothing = throw Error()

 

8. Typealias

C/C++의 typedef처럼 사용할 수 있다


// 타입 별칭 선언
typealias PeopleList = List

fun sendMessage(people: PeopleList) {
  people.forEach {...}
}

// 함수형 타입의 타입 별칭
typealias PersonFilter = (Person) -> Boolean

fun sendMessage(people: List, filterFunc: PersonFilter) {
  people.filter(filterFunc).forEach {...}
}

출처 : https://horajjan.blog.me/221563323830

'소프트웨어 > Kotlin' 카테고리의 다른 글

Kotlin let을 이용한 Null check 구문  (0) 2019.07.01
[Kotlin/Swing] 화면 잠금 방지 App 1.0  (0) 2019.06.24