코틀린 언어로 여러 플랫폼에서 사용 및 실행 가능하다.
크게 Common, Client로 나뉘는데
Common은 언어수준의 공유같고
중요한건 Client로 Android,IOS, Web 등 클라이언트가 하나의 언어로 실행 가능하다.
백엔드는 크게 무관할듯
장점을 설명하는것같다. Java의 기술스택과 호환되고 러닝커브는 당연히 완만해진다.
나머지들도 코틀린 장점 어필중 패스
나머지 안한것들 위주로 적으려고 한다.
val t = "이렇게"
val s = "도중에 적으려면 ${t}"
중관호에는 함수가 들어갈 수도 있다.
map 순회for ((k, v) in map) {
println("$k -> $v")
}
val p: String by lazy { // the value is computed only on first access
// compute the string
}
위 값은 처음 접근할 때 계산된다.
fun String.spaceToCamelCase() { ... }
"Convert this to camelcase".spaceToCamelCase()
원래 String에는 spaceToCamelCse라는 기능이 없지만 확장을 통해 만들었다.
object name{
}
오브젝트 내부에 값을 줘서 싱글톤으로 생성 가능하다.
추상 클래스
자바와 동일하다.
내부에 abstarct fun을 정의한다.
If-not-null
.을 이용해서 매서드를 실행시킨다.
이때 null가능성이 있으면 오류를 뿌리는데
?.을 이용하면 null처리가 된다.
위를 이용하면 ?. 뒤에 실행을 시킬 수 있다.
val value = ...
value?.let {
... // execute this block if not null
}
위를 보면 let을 사용해서 value에 따라 값을 실행시킬 수 있다.
If-not-null-else
위 7의 업글버전이다.
말그대로 null이 아니면 실행, null이면 다른걸 실행한다
먼저 ?.을 동일하게 해주고 그 뒤에 :.을 붙여서 만약 null이면 할 행동을 붙인다.
Execute a statement if null
위 8의 응용으로 어떤 값이 null 이면 실행 시킬 수 있다.
val values = ...
val email = values["email"] ?: throw IllegalStateException("Email is missing!")
values에 email이 없으니 에러를 던진다.
val result = try {
count()
} catch (e: ArithmeticException) {
throw IllegalStateException(e)
}
try - catch문도 지원한다. 값을 try후 받을 수도 있다.
if 문도 위처럼 값으로 받을 수 있다.
fun arrayOfMinusOnes(size: Int): IntArray {
return IntArray(size).apply { fill(-1) }
}
.apply 매서드를 사용하면 초기화가 가능하다
.also 매서드를 이용하면 된다var a = 1
var b = 2
a = b.also { b = a }
also는 객체를 조작하고 나서 원래 객체를 반환한다.
b=a 해서 b에다가 a를 넣고, 원래 b를 반환한다.