일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JavaScript
- lv2
- VAR
- java
- 호이스팅
- 동적계획법
- 2021 KAKAO BLIND RECRUITMENT
- level3
- Lv3
- 컴퓨터비전
- dp
- const
- 2018 KAKAO BLIND RECRUITMENT
- BFS
- 컴퓨터 비전
- 자바
- 프로그래머스
- 코틀린
- js
- 누적합
- 백준
- level2
- 유니온파인드
- 삼성SW역량테스트
- 자바스크립트
- 2023 KAKAO BLIND RECRUITMENT
- 브루트포스
- 구현
- 2022 KAKAO BLIND RECRUITMENT
- kotlin
- Today
- Total
목록개발/앱(Android) (4)
코드를 느껴바라
Kotlin 클래스 초기화의에는 여러 방법이 존재한다.Kotlin에서는 클래스 초기화를 위해 constructor, init, secondary constructor를 유연하게 조합할 수 있다. 각각의 개념을 명확히 이해하고 올바르게 사용하는 것이 유지보수성과 가독성을 높이는 데 도움이 된다고 하여 정리하여 포스팅을 해본다.1. 주 생성자 (Primary Constructor)Kotlin의 주 생성자는 클래스 선언부에서 함께 정의된다. 값을 객체 외부에서 전달받아 클래스 내부 프로퍼티로 초기화하는 데 사용된다.class Person(val name: String, val age: Int)val 혹은 var 키워드를 사용하면 자동으로 프로퍼티가 정의된다.constructor 키워드는 생략 가능하다.명시적으..
개발하면서 이런 코드 한 번쯤은 봤을 거다.val result = sequenceOf(1, 2, 3).map { it \* 2 }처음 보면 listOf랑 비슷하게 생겼는데, sequenceOf...? 뭐지? 리스트랑 뭐가 다른 거지? 싶다. 나도 그랬다. 그냥 List 쓰면 안 되나? 싶어서 한동안은 신경도 안 썼는데, 이거 은근히 잘 쓰면 성능 최적화에 꽤 유리한 도구다.Sequence가 뭐냐면Kotlin에서 Sequence는 게으르게 계산(lazy evaluation)되는 컬렉션이다.쉽게 말하면, List처럼 값을 들고 있는 게 아니라, 필요할 때마다 원소를 하나씩 꺼내서 계산하는 구조라고 보면 된다. 그러니까 "결과를 지금 당장 다 만들지 않고, 쓰는 시점에서 하나씩 만든다"는 개념.예를 들어, 이..
Kotlin에서 field란?Kotlin을 쓰다 보면 field라는 걸 볼 수 있는데, 이게 뭘까?field는 Kotlin의 프로퍼티(멤버 변수)가 실제 값을 저장하는 공간이다.쉽게 말하면 프로퍼티의 "진짜 저장소"라고 보면 된다.📌 1. field가 왜 필요할까?Kotlin에서는 프로퍼티를 선언하면 자동으로 getter와 setter가 만들어진다.그런데 커스텀 getter나 setter를 만들 때, 무한 재귀 호출이 발생할 수 있다. ❌ 무한 재귀가 발생하는 코드class Person { var name: String = "Unknown" get() = name // 여기서 무한 루프 발생!}get()이 name을 반환하려고 하지만, name을 다시 호출하면서 무한 루프가 발생한..
코틀린 변수 및 상수일반적으로 우리가 java나 C++같은 프로그래밍언어를 사용하다보면 char, int, float, double, long..... 같이명시적으로 변수타입을 선언해준다. 그러나 코틀린에서는 var, val 같이 타입을 선언해준다.이것에 대해 추가적으로 const까지 설명해보겠다.가변(mutable)변수 : varvar a = "hi";var b = 2025;b = 3000;var c = 4.5; 재할당이 가능한 변수이다.한 번 값을 할당한 후에도 나중에 다른 값으로 변경할 수 있다.그러나 선언한 시점 또는 첫 할당시점에서 변수의 타입은 정해지기에var a = 100; a = "hi"; 이러한 코드는 불가능하다.그러나 이것도 가능하게 할 수 있는데...그것은 바로Any 타입var a: ..