1. 코틀린에서 숫자는 primitive type 인데 이거를 객체인거 처럼 해서 숫자에 함수를 호출할 수 있게 해준다.
이거 봐라.
2. 코틀린에서는 implicit type conversion이 안된다.
그래서 이렇게 해야한다.
3. 코틀린에는 두 가지 변수 타입 var(mutable), val(immutable) 이 있다.
var 는 언제든 대입이 가능하고 val 은 선언되었을 때 한번 대입이 가능하다.
그리고 변수가 무슨 타입인지 명시적으로 표시할 수도 있고 컴파일러가 그냥 쉽게 알 수 있으면 생략가능.
4. String 이렇게 할 수 있다.
$ 키워드와 {} 중괄호 를 기억하자.
5. if문 신박하다.
1..100 하면 1이상 100 이하가 된다.
else 문이 if 문 중괄호 끝나는 라인에 이어서 쓰더라.
6. 코틀린에서 switch 는 when 이다
7. 거지같은 ? Operator
일단 코틀린의 모든 변수는 null 이 될 수 없다.
그런데 여기서 ? 를 붙이면???????????????????????????
된다.
변수가 null 인지 아닌 지 테스트하려면 보통 if(variable == null) .. else{} 이런식으로 하는데 코틀린은 코틀린 스타일대로 하자.
물고기밥이 null 이 아니면 dec() 를 실행하고 null 이면 null 을 반환하고 끝난다.
물고기밥에 null 이 아니면 dec() 을 실행하고 null 이면 ?: 뒤에 있는 값을 넣는다. 요런 것도 되네
!! operator 도 알아두자.
8. List, Array 그리고 Loop
listOf 로 리스트를 만든다.
mylist.remove() 해서 성공하면 true 반환한다는 것도 깨알같이 알아두자.
arrayOf 로 array 를 만든다.
섞어.
intArrayOf 로 선언가능 doubleArrayOf 도 있고 다른 것도 있다.
이러면 메모리를 더 아낄 수 있다!
코틀린의 array 는 invariant 하다! 즉 array<String> 은 array<Any> 에 subtype 이 아니다!
합치면 이어진다.
요렇게 초기화 가능 it 가 예약어 인가 싶다. 쩐다.
in 키워드 알고가자.
파이썬의 enumerate 가 부러웠나 index 와 element 둘 다 출력 가능
다양한 루프기능 이렇게 여러개 제공해주면 오히려 안좋은거 같다.
repeat 루프 repl 에서는 반복문의 개행이 안된다.
9. 추가
Expression Translated to
a + b a.plus(b)
a – b a.minus(b)
a * b a.times(b)
a / b a.div(b)
a % b a.rem(b)
a .. b a.rangeTo(b)
a in b b.contains(a)
a++ a.inc()
a-- a.dec()
a += b a.plusAssign(b)
a -= b a.minusAssign(b)
a *= b a.timesAssign(b)
a /= b a.divAssign(b)
a %= b a.remAssign(b)
a > b a.compareTo(b)> 0
a >= b a.compareTo(b)>= 0
a == b a?.equals(b) ?: (b === null)
왼쪽처럼 써도 내부적으로 오른쪽처럼 변환된다!
이렇기 때문에 operator overriding 을 할 수 있다!!
data class Counter(val dayIndex: Int) {
operator fun plus(increment: Int): Counter {
return Counter(dayIndex + increment)
}
}
Counter(0) + 10
Counter(0).plus(10)
요런 식으로
fun demo(x: Any) {
if (x is String) {
print(x.length) // x is automatically cast to String
}
}
is 나 !is operator 를 사용하면 runtime 때 타입 체킹을 한다!
'Kotlin' 카테고리의 다른 글
코틀린 (4) 필터 (0) | 2022.04.03 |
---|---|
코틀린 (3) Functions (0) | 2022.04.03 |
코틀린 (0) | 2022.04.02 |