코틀린 독학하기 3

Table of Contents

코틀린 독학하기 3

코틀린 독학

식별자

식별자는 오직 문자, 숫자, 밑줄 문자(_)만 포함한다. 숫자로 식별자를 시작할 수는 없다

밑줄로만 이뤄질 수도 있다. 하지만 이런 식별자(_, __, ___등)는 모두 미리 예약된 식별자이므로 일반적인 식별자로는 사용될 수 없다

하드 키워드hard keyword를 식별자로 쓸 수는 없다.

하드 키워드(val, fun 등)는 코드 어디에 있든 키워드로 간주된다. 반면 소프트 키워드(import등)는 특별한 문맥에서만 키워드로 간주되고, 그런 문맥이 아닌 경우에는 일반적인 식별자로 씅리 수 있다. 하드 키워드와 소프트 키워드의 목록은 kotlin docs에서 볼 수 있다

자바와 달리 코틀린 식별자에는 달러 기호 $를 쓸 수 없다

두번째 형태는 작은역따옴표(`)를 감싼 식별자로 두 작은역따옴표 사이에는 빈 문자열을 제외한 아무 문자열이나 와도 된다.

가변 변수

지금까지 살펴본 변수는 불변이다. 불변 변수는 한번 초기화되면 다시는 값을 대입할 수 없다. 자바의 final 변수와 비슷하다. 불변 변수를 사용하면 함수가 부수 효과를 일으키지 못하고 함수형 스타일 코드를 장려할 수 있으며 이로 인해 코드에 대한 추론이 쉬워지기 때문에 가능하면 불변 변수를 많이 사용해야한다

하지만 필요한 경우 val 대신 var 키워드를 사용해 가변 변수를 정의할 수 있다. 기본적인 문법은 불변 변수의 경우와 같다. 다만 원할 때 변수 값을 얼마든지 바꿀 수 있다는 점이 다르다. 변수 값을 바꿀 때 사용하는 = 연산을 대입이라고 부른다 대입 연산은 불변 변수를 초기화 할때 사용했던 것이다

var sum = 1

sum = sum +2

sum = sum + 3

처음 변수에 값을 대입할 때 추론된 변수 타입은 변수가 불변이든 그렇지 않든 계속 유지된다. 숫자로 처음 시작했으면 숫자로 계속 가는 것이다

var sum = 1

sum = “Hello”

는 에러를 일으킨다

전위나 후위 연산자

var a = 1

println(a++) 

a는 2, 1이 출력됨. a값을 ‘나중에’ 더해준다. a 다음 ++가 나오면 그런 뜻이다. println()은 출력하는 함수이다. ++는 연산자이다. 지금은 a++이므로 후위연산자이다. 뒤에 있으므로 ‘후위’이다. 앞에있으면 ‘전’, 뒤에 있으면 ‘후’이다.

println(++a)

a는 3, 3이 출력됨. a값을 ‘먼저’ 더해준다. a 전에 ++를 붙이면 그렇게 된다

println(–a)

a는 2, 2가 출력된다. a값을 ‘먼저’ 빼준다

println(a–)

a는 1, 2가 출력된다. a값을 ‘나중에’ 빼준다.

식과 연산자

지금까지 사용한 코틀린 식을 다음과 같이 분류할 수 있다.

각 타입에 속하는 구체적인 값을 표현하는 리터럴(12, 2.56)

변수/프로퍼티 참조와 함수 호출(a, redaLine(), “abc”.length, “12”.toInt())

전위와 후위 단항 연산(-a, ++b, c–)

이항 연산(a+b, 2*3, x<1)

모든 식은 정해진 타입이 있으며 이 타입은 연산이 만들어내는 값의 범위와 값에 허용되는 연산을 결정한다.

변수 참조와 함수 호출에 점(.)으로 구분된 수신 객체receiver연산을 포함시킬 수 있다는 점에 유의한다. 예를 들어 readLine()!!.toInt()는 readLine()!!이 만들어낸 값의 문맥에서 String에 (이 타입은 readLine()!!의 결과 타입이다) 정의된 toInt()라는 함수를 호출한다.

-> 이 말은 readLIne()!!은 기본적으로 문자(Stirng)으로 값을 받아들이는데 toInt()를 . 뒤에 써주면 정수로 바꿔줄 수 있다는 것이다. 그냥 . 만 붙이면 된다는 뜻이다. 그게 규칙이다.