Kotlin

코틀린 (2)

tjddneva 2022. 4. 2. 23:50

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