그냥... 어.. 짜증이 너무 난다. 자바 전신이라 그런 것 같다. 그 과정중에 이런거 아닐까? 하고 생각해본 것들..
1. main 함수 만드는것도 java에서 package만들고 그 폴더 안에서 main 클래스 만들고 하는 거랑 비슷한 것 같다. 단지 클래스 이름을 안맞춰도 되는 듯.
2. val은 변경 안되는 변수고, var은 변경되는 변수라는데 걍 val만 쓰는 것 같다.
3. MutableList<T>랑 mutableListOf<T>가 따로있고, 리스트를 만들어 줄 땐 mutableListOf를 사용한다. 아마 List<T>나 Mutable<T>는 Int처럼 어떤 자료형인지 나타내는데 사용하는 것 같다. 말장난하나
또 List<T>, Array<T>, ArrayList<T> 이렇게도 종류가 있지만 결과정으론 Mutable이 부모클래스라 컴파일할 땐 어차피 mutable로 되서 거기서 거기의 속도가 나온다고 한다. 이럴거면 왜 저렇게 복잡하게 종류를 많이 만들었나? 이게 발전한 최신 언어라고?
4. 그래도 편리하게 만든다고 입력받을때 토큰 만들고 System.out.input 이런거 쓸 필요 없다. 그냥 readline()으로 해결하고, string에서 split이나 map도 파이썬처럼 사용 가능하다. 자기 자신의 원소를 가리킬 땐 it을 사용한다.
val st:String = readLine().toString()
val sl = st.split(" ").map { it.toInt() }
return sl
또 System.out.println도 사용할 필요 없이 println만 써도 됨. println은 코틀린 언어고 System.out.println은 자바언어. 완벽한 호환성을 위해 남겨놓은 것 같다. 5. 자바처럼 앞에 int a = 8로 안하고 불편하게 val a:Int = 8 이런식으로 해야 한다. 또 함수 정의할 때 argument들의 자료형과 return 하는게 어떤 자료형인지 반드시 명시 해줘야 한다. 안그러면 에러난다. 이게 함수 정의하는건 이해해도 저 변수명 정하는 방식은 이해가 안간다.
6. 리스트 정의할때도 화나는게 아니 그냥 List<Int>(8) 이런식으로 하면 안되나?
불평만 늘어놓은 것 같다..
스스로 확인할 사항스스로 확인할 사항은 매일 챌린지 문제 해결 과정에서 학습한 내용을 스스로 점검할 사항이다. 학습 배경 지식과 함께 문제 해결 과정에서 경험을 정리해두기를 권장한다.
정수형만 지원한다고 가정하고 구현할 경우, 문자열을 지원해야 하는 경우 어떤 부분이 달라졌는가 설명한다.
어떤 자료형을 받는지 달라짐. 즉 generic을 다르게 설정.
함수를 여러 개로 분리해서 만들면서 어떤 기준으로 함수를 분리했는가 설명한다.
1. 반복하는거. 2. 길어지는거.
git의 branch에 대해서 이해를 하고 있는가 본인이 이해한 데로 설명해본다.
branch를 딴 시점에서 그 branch는 복사본과 비슷한 형태가 됨. 실제로 local도 branch가 변함에 따라서 같이 바뀐다. merge가 이 branch들끼리 합치는거고 push와 pull은 local과 github와의 연동.
PR 보낼 때까지 과정에서 사용한 git 명령과 명령별 옵션을 확인해본다.
add 해서 commit 할거 stage에 올리고 commit. github에 push. github 내에서 branch 끼리 합쳐달라는 pull request.
다같이 확인할 사항다같이 확인할 사항은 챌린지 문제 해결 과정 이후에 그룹과 함께 서로 다른 시각에서 설명하고, 이해한 내용을 공유하는 사항이다. 그러기 위해서 배경 지식과 본인의 의견도 함께 정리해두기를 권장한다.
원본 저장소를 fork해서, PR을 보낼 때까지 흐름에 대해서 각자 이해한 내용을 설명하고 다른 사람 설명과 차이점가 있는지 비교한다.