목록안드로이드/코틀린 (3)
우찬쓰 개발블로그
보통 enum class로부터 정의된 값을 찾는다. enum class Test(val value: Int){ A(0), B(1), C(2) } 그런데 0으로 부터 A라는 enum을 찾으려면 어떻게 해야할까? 이를 위해서는 새롭게 fun을 만들어야 한다. object FindTestByValue { private val map = Test.values().associateBy(Test::value) fun fromValue(value: Int) = map[value] } 이렇게 funtion을 구성한 뒤에 fromValue를 호출해서 쓰면 된다. FindTestByValue.fromValue(0) // Test.A가 리턴됨
클래스에 변수(이하 프로퍼티)로 선언한 값이 바뀔때 감지하고 싶은 경우가 있다. RxJava를 통해 직접 구현할 수도 있겠지만 코틀린에서는 기본문법으로 제공하고 있다. 한 상황을 예를들어보자. 이 상황은 간단한 상황이다보니 '그냥 메소드로 만들어서 처리하면 되겠는데?' 라고 생각 할 수도 있지만 실제 개발에서 더 복잡한 상황이 된다면 여기저기서 메소드를 호출하고 난잡해 지는 상황이 올 수 있다. 뿐만 아니라 프로퍼티 값에따라 여러 로직을 처리하고 싶을때도 있고 그 로직을 여기저기서 컨트롤 하기에는 스파게티 소스가 되어버릴 수 있다. 이런경우를 대비하여 프로퍼티 값 변경 감지를 위한 소스를 짜보자. class Test { var something: String by Delegates.observable("..
일반 자바와 상식적으로 다르게, foreach 문에서는 break를 다르게 구현해야 한다. 아마 대부분 이 글을 찾아왔다면, 아래와 같은 문제를 겪었을 것이다. 예시를 들어보자. '1', '2'와 '끝'을 찍고 싶어서 다음 메소드를 만들었다고 치자. fun testForeach() { val testList = arrayListOf(1,2,3,4,5) testList.forEach { if(it == 3) return println(it) } println("끝") } 슬프게도 이 메소드는 '1', '2'만 찍히고 '끝'은 찍히지 않는다. 왜냐하면 여기서 return 은 메소드를 리턴시키기 때문이다. 그렇다면 당신은 이것도 시험해 봤을 것이다. fun testForeach() { val testList ..