17. init {..} 은 instance가 생성 될때 최초에
호출되는 function 입니다.
일반적으로 object는 우리가 알고 있는
singleton을 의미합니다.
instance를 2번 콜 하지만 실제로
instance는 한번만 생성 되었기 때문에
init은 최초에 한번만 생성이 됩니다.
singleton이기 때문에 firstSingleton에서
값을 set한 str을 secondSingleton에서도
사용이 가능합니다.
19. plusString은 String에서 지원하지 않는
메소드 입니다. 하지만 KotlinExtenstions을
이용해 마치 String에 있는 메소드 처럼 사용
할 수 있습니다.
add10 또한 Int가 지원하지 않지만, 마치
Int가 제공하는 메소드 처럼 사용 할 수
있습니다.
이렇게 유틸성 메소드들을 만들어 사용하면
굉장히 편리하지만, Object에 관련이 있는
메소드들만 extenstion 하길 권장합니다.
무분별한 사용은 코드 관리가 어려워 지고,
Object가 애매하거나 모호해 질수 있습니다.
23. Summary
scala, haskell 등 다른 언어들과 비교하면 아직
지원하지 않거나, 불편한 점도 가지고 있습니다.
하지만 update 시기가 상당히 빠르며, 다른 언어들의
장점 들을 많이 흡수 하고 있습니다. Slack이나
커뮤니티를 통해 사용자들과 많은 커뮤니케이션을
하고 있어, 요구사항이나 버그에 항상 귀를 기울이고
있고, 피드백에 적극적으로 대응하고 있습니다.
Android 같은 경우에는 당장 Java를 대체 할 수도
있습니다. 해외에서는 백엔드나 프론트에서도 관심이
많다고 합니다.
Kotlin은 Java 보다 생산성 측면에 있어 월등히 좋다고
말할 수 있습니다. OOP or FP 를 고민하는건 좀 더 심
각한 문제고, Java 코드를 Kotlin 코드로 적용 하는 것
만으로도 충분히 가치가 있다고 생각됩니다.
(immutable, nullSafe, lambda 등등)
FP에 관심이 있다면 FunFunStudy로!!