Kotlin 기본 문법 정리
https://www.inflearn.com/course/%EC%BD%94%ED%8B%80%EB%A6%B0-%EA%B0%95%EC%A2%8C-%EC%83%88%EC%B0%A8%EC%9B%90/lecture/7229
위 inflearn 사이트의 강의 중
새차원, 코틀린(Kotlin)강좌를 기반으로 작성하였습니다.
1. 패키지 정의
- 패키지 정의는 파일의 최상단에 위치
- 디렉터리와 패키지를 일치시키지 않아도 됨
*import는 자바와 유사함
2. 함수 정의
- 함수는 fun 키워드로 정의
- 함수 몸체가 식(Expression)인 경우 return 생략가능
- 이런 경우 return type이 추론됨
- 리턴 할 값이 없는 경우 Unit(Object / 자바에서 void라고 생각하면됨)으로 리턴 함
- Unit은 생략가능
3. 지역 변수 정의
- val: 읽기전용 변수
- 값의 할당이 1회만 가능 Java의 final과 유사
*내 생각*
final 변수는 값을 한 번만 할당할 수 있다.
때문에 예시 중, 첫번째는 a라는 변수에 Int라는 자료형을 지정하고
곧 바로 1이라는 값을 할당하여 정상적으로 a에 1이 할당 되었다.
또한, 이제 a에게 다른 값을 지정해주어도 할당이 되지 않는다.
ex)
위와 같이 다른 값을 주었을때, 빨간줄이 뜨면서
'Val cannot be reassigned' 이라는 오류가 뜬다.
정확하지는 않지만, 'Val은 재접근(?)될 수 없다.'는 의미 같다.
두번째 예제는 첫번째와 같은 것인데 Kotlin 이친구가 똑똑하여
자동으로 자료형을 추론 할당해준다는 것 같다.
여기서 가장 문제가 세번째인데,
이 세번째 예제가 이해를 하고자 하면 기본적인 프로그래밍 지식이 필요할 듯 하다.
일단, 위의 구문을 보면 Val로 c라는 변수가 자바에서 final과 같은 것임을 선언했다.
그리고 c의 자료형은 Int라는 것도 동시에 선호하였는데,
문제는 c에 어떤 값을 넣어줄지를 정해주지 않았다.
이 때 print()로 c의 내용을 출력해주려 하면 에러가 발생한다.
**initialized : [타동사][VN] (컴퓨터) 초기 내용을 설정하다
출저 : https://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=6cca7c6116f04f0fb63679142fcc8c6e
initialize : 네이버 영어사전
초기 내용을 설정하다
endic.naver.com
변수 c는 반드시 초기화가 되어야 한다는 내용인것 같다.
그런데 웃긴게 밑에서 c = 3이라고 값을 넣어주는데,
거기에도 에러가 발생한다.
여기서 ???왜 초기화 해주는데 뭐임뭐임??? 하고 생각할 수도 있다.
적어도 나는 그렇게 생각했는데,
자바에서 final은 한 번 초기화되면 변하지 않는다.
즉, 해당 라인(선언되는 라인)을 벗어나서는 값을 줄 수가 없다.
그래서 c도 마찬가지로 선언과 초기화를 동시에 해주지 않으면 안되는 듯 하다.
*내 생각 끝*
- var : Mutable 변수
4. 주석
- Java와 Javascript와 동일함
- // 한 줄 주석
- /* */ 여러 줄 주석
- 여러 줄 주석이 Java와 달리 중첩 허용됨
5. 문자열 템플릿
- Srting Interpolation(문자열 보관법)
*내 생각*
이 기능 솔직히 대박적인것 같다.
엄청 간결하고 큰 따옴표를 남발하지 않아도 되서 편리한 것 같다.
*내 생각 끝*
6. 조건문
- 조건식으로도 사용가능
7. nullable
- 값이 null일 수 있는 경우 타입에 nullable 마크를 명시 해야 함
- nullable 타입의 변수를 접근 할 때는 반드시 null 체크를 해야함
- 그렇지 않을 경우 컴파일 오류 발생
8. 자동 타입 변환
- 타입 체크만 해도 자동으로 타입 변환이 됨
*Any : 최상위 자료형? 객채?
9. while 문
- Java와 거의 같다
10. when
*자바의 switch ~ case 문과 유사하지만 더욱 강력함*
11. ranges
- In 연산자를 이용해서 숫자 범위를 체크 가능
- range를 이용한 for loop
*내 생각*
바로 위의 for문은 무한 반복문이다.
n은 영원히 3이기 때문..
*내 생각 끝*
12. collections
- 컬렉션도 in으로 loop 가능
- in으로 해당 값이 collection에 포함되는지 체크 가능
! 여기서 잠깐 !
**보충 필요**
강의에서 설명이 없어서 직접 찾아본 setOf와 listOf의 차이점
- setOf : 주어진 인자값을 읽기전용으로set하여 return 해준다
- listOf : 주어진 인자값을 읽기전용 list로 return 해준다
참조 : https://kotlinlang.org/
Kotlin Programming Language
kotlinlang.org
13. Collections
- 람다식을 이용해서 컬렉션에 filter, map 등의 연산 가능
*이 부분은 람다식과 각 연산에 대해 추가설명을 조사하여 업로드 예정*
~ 첫 수강 후 느낀점 ~
1. 재미있다. 난 모바일 코딩이 젤 잼나는 것같다.
2. 솔직히 설명이 너무 빈약하다.
프로그래밍 모르는 사람이 들으면 진심 1도 이해 못 할듯.
3. kotlin 뭔데 이렇게 획기적인가? 파이썬도 수박 겉핡기만 해봤지만,
개인적으로는 kotlin이 호감이다. 이유는 X