코틀린 is, when ?

짜리몽땅개발자·2021년 10월 23일
0

토요일이 무색하게 하루가 빠르게 지나갔다. 그냥 잠만 잔것 같다. 계속 잠이 온다. 희한하다. 정신을 차려서 뭔가 하고 싶어도 계속 잠이 와서 자게 된다. 뭔가 몸에 문제가 있는 것 같다. 백신은 제대로 잘 맞은것 같은데 왜 그런지 궁금하다.

혹시 그것때문에 그런거 같아서 좀 해볼까 생가하지만, 역시나 그건 문제가 아닌것 같다.
공부를 계속 하게 된다. 최근에 다시 복습하고 있다. 코틀린, 리액트 공부를 말이다.
코틀린은 아무래도 이펙티브 자바에 특징을 모두 흡수하기 위해서 만든 언어라 그런지 파면 팔수록 어렵다. 그래도 어쩌 겠는가? 이왕 이렇게 된거 꼭 해야 되지 않겠는가?

공부할게 너무 많고 하고 싶은건 너무 많다. 공부를 끝내고 결과물을 만들고 평가를 해야 하는데 그게 요즘 잘 안된다. 그래서 더더욱 내 자신에게 실망이다. 날이 추워서 그런지 이불속으로 몸을 숨기는 이유도 그런 이유 인것 같기도 하다.
다이어트를 위해서 샐러드를 먹다가 오늘은 도저히 참을 수 없어 돈가스를 시켜서 먹으니 몸도 마음도 풍요로워서 모든게 좋아 보인다.

자 그럼 본론으로 들어가서 오늘 공부한 내용을 간단하게 정리해 본다.
일단 코틀린부터 무엇을 했냐면...
as 문과 is문에 대해서 알아보았다.

is문을 쓰면 신기하게도 코틀린에서는 타입을 체크하고 스마트캐스팅을 해준다.
이말이 무슨말인가 하면,
자바에서는 어떤 인스턴스를 체크 하기 위해 instanceof 를 사용해서 체크를 하고
그 체크한 인스턴스를 형변환 하여 사용하지 않던가? (Spoorts) object; 뭐 이런식...
그러니 불편하게 코드를 적다 보니 오타나 버그를 유발할 수도 있고 말이다.
하지만, 코틀린에서는 is 문만 적당하게 적어두면, 알아서 스마트캐스팅을 컴파일러가 도와 주어
바로 형변환 없이 해당 함수나 속성을 이용할 수 있는 편리함을 접할 수 있다.
굉장히 편리한 기능이다. 아마도 코드를 한줄이라도 더 적게 쓰기 위한 코틀린에 컨셉에 가장 잘 맞는 코드인것은 분명하다.

다음은, when문에 대해서 공부한 내용이다. when문은 if문에서 발전된 문법이라고 하기에 뭐 별거 있겠어 그냥 switch문 정도 겠지 했지만, 그 이상이다.
일단 when을 사용하면 조건문을 넣을 수 있고, 범위를 지정할 수 있으며, 인스턴스를 비교 할 수 있다. 하나씩 보자.

when (case) {
 1..10 -> println ("1부터 10입니다")
 10..20 -> println ("10부터 20입니다.)
 else println("아무런 범위에 속하지 않았습니다.)
 }

이런 범위가 가능하다. 얼마나 신기한가? 아마 자바로 이 문장을 짜기 위해서는 if문을 써야 할 것이다. 자바는 switch에서 범위가 불가능 하기 때문이다.
다음으로는 인스턴스를 비교하는 문장을 만들어 보자 .

when (rainbow) {
 (red, blue) -> println("빨강, 파랑 입니다")
 (yellow, orange) -> println ("노랑, 오렌지 입니다.")
 else -> println("아무런 색도 아닙니다.")

뭐 대충 이런식으로 인스턴스에 어떤 파라미터를 넘겼는지에 대해서도 비교가 가능하다. 참 신기하고 기발하다. 이런 문법을 만든것 자체가 대단하고 개발자를 편하게 만드는 것 같다.
개발자들에 코드를 점점 줄여주는 것에 대해 개발회사와 개발언어를 만드신 분들에게 감사말씀 올린다. 좀더 양질에 좋은 결과물을 만들 수 있도록 어찌됐든 도와준것이기 때문이다.

10여년이 넘게 개발을 해왔기에 어떤언어와 어떤 프레임워크를 써야 하는지 의식에 흐름대로 몸이 흘러가는걸 느꼈지만 이렇게 이번같이 강력하게 나를 흡수하는 것은 처음 느껴본다.
새로운 언어와 새로운 프레임워크는 항상 개발자를 신나게 한다. 개발자가 재밌게 공부하고 좌절하지 않고 매너리즘에 빠지지 않게 도와준다. 그래서 개발자들은 계속 공부하고 연구하고 탐구해야 하는것 같다. 나또한 개발 언어와 프레임워크들이 나올때마다 박수를 치며 날새며 공부했던 기억이 난다. 지금은 직장생활을 하느라 그렇게 충동적으로 하지는 못하지만 그래도 나름 할려고 노력은 하고 있다.

profile
시간은 돈과 바꿀 수 있다.

0개의 댓글