일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- linebreak
- element tree
- 에러
- 비동기 처리
- 알고리즘
- Android
- 앱아이콘 변경
- Singleton
- Kotlin
- 거리알고리즘
- dart
- 싱글톤
- 초기화
- 플러터
- Widget Tree
- 플러터 동작
- Render object tree
- 코틀린
- Lazy
- zwj
- 자바
- flutter
- dfs
- 재귀
- 프리즈드
- 프로그래머스
- Java
- 자료구조
- IOS
- 완전탐색
- Today
- Total
목록Kotlin (4)
모바일 개발하는 자바리안의 메모장
object 와 companion object 의 차이점을 알아봤다. Kotlin 에서는 싱글톤 클레스를 정의할 때 ojbect 키워드를 사용된다. class가 아닌 object로 선언해줌으로서 완전 static 클레스가 된다. (자바에서 싱글톤 만들던거랑 비교해보면 엄청 편함...) 아래 예제와 같이 별도의 별도의 객체생성 없이 클래스를 통해 바로 인스턴스 함수, 변수에 접근할 수 있다. object MyObject { fun myFunction() { println("myFunction inside MyObject") } } fun main() { MyObject.myFunction() } companion object 또한 싱글톤과 관련된 문법이며, 클래스에 연결된 특수한 종류의 객체이다. Comp..
Kotlin은 변수 초기화 지연을 도와주는 위한 유용한 기능이 존재하는데, 나에게 매우 잘 어울리는 키워드인 lazy 키워드다. lazy초기화의 경우 read-only 변수, 즉 val 변수에만 사용할 수 있다. 우선 예제 코드를 보자 : class JavarianActivity : AppCompatActivity(){ val sampleTextView: TextView by lazy { // Lazy init. findViewById(R.id.tv_1) as TextView } fun updateTextView() { sampleTextView.text = "Hi" } } 앞서 설명한 바와 같이, 코틀린에서의 모든 변수(property)는 초기화를 필수로한다. 일반적인 초기화라면 sampleTextVi..
코틀린은 슬기로운 초기화를 위해 다양한 기능들을 제공해준다. 이는 자바에서 쉽게 발생하던 NullPointerException에 대한 사전 방지를 위해 선언 단계부터 엄격하게 관리를 해주는거라는데,, Null Safety를 위해 코틀린에선 어떤 방식으로 Nullable를 관리해주는지 알아보자. 아래 코드를 보자 : fun main() { var str : String = "text" str = null // Error } 위와 같은에러가 발생한다. 왜와이? 익숙하게 선언한 String 타입에 null은 해당되지 않기 때문이다. 그렇다면 nullable한 타입은 어떻게 선언해주면 될까? fun main() { var str : String? = "text" str = null // Good } 간단하게 타..
딱 처음 Kotlin을 접하고 볼 수 있었던 자바와는 살짝 다른 변수 선언과 초기화,, 차이점 2가지는 다음과 같다 : 첫번째, 변수의 타입을 변수명 뒤에 명시해준다. Java) String str = "text"; Kotlin) var str : String = "text" Kotlin의 경우 변수명 : 데이터타입 형태로 변수를 선언한다. 타입이 굳이 명시하지 않아도 똑똑한 코틀린 컴파일러가 알아서 해결해준다. 보다 쉬운 이해를 위해 아래 코드를 보자 : fun main() { val str = "I am a string" checkDataType(str) } fun checkDataType(input : Any) { when(input) { is String -> print("Type is Strin..