목표 enum class의 사용법을 이해한다. enum class에 대한 함수 만들기 class Task { var state: State = State.WAITING fun printState() = when(state){ State.WAITING -> println("Waiting..") State.PROCESSING -> println("Processing..") State.DONE -> println("Task done") } enum class State { WAITING, PROCESSING, DONE } } 앞의 글에서 위의 코드를 보았다. 하지만, 이 코드는 문제가 있다. 특정한 state가 추가될 때마다 when의 분기에 무조건 print를 위한 처리 로직을 넣어주어야 한다. 공통 함수 ..
분류 전체보기
목표 enum class가 무엇인지 이해한다. enum class가 사용되어야 하는 곳을 이해한다. enum class를 왜 사용해야 하는가? 변수의 상태 별로 다른 결과값을 출력하는 코드를 짜야한다면 어떻게 짜야할까? 직관적으로 떠오르는 방법은 변수의 상태를 상수로 정의한다음 상태 별로 동작을 정의하는 것이다. 예를 들어 Task라는 작업 단위가 있고 해당 작업 단위의 상태값이 state를 출력해주는 클래스를 설계한다고 해보자. 그러면 해당 클래스는 아래와 같이 만들어질 수 있다. class Task { var state: Int = WAITING fun printState() = when (state) { WAITING -> println("Waiting..") PROCESSING -> println..
목표 Period Class는 날짜의 구간을 표현한다는 것을 이해한다. 개요 Period Class는 두 날짜 객체 사이의 구간(period)을 만드는 클래스이다. 날짜 데이터로만 Period Class를 만들 수 있다. 따라서 LocalDate를 이용해서만 Period를 만들어낼 수 있다. 생성 Period는 Period의 다양한 정적 메서드를 이용해 생성할 수 있다. between 메서드 val localDate1 = LocalDate.of(2021, 2, 12) val localDate2 = LocalDate.of(2021, 2, 14) val period = Period.between(localDate1, localDate2) println(period) // P2D //P : Period의 약자..
목표 Duration Class는 시간의 구간을 표현한다는 것을 이해한다. 개요 Duration Class는 두 시간 객체 사이의 지속시간(duration)을 만드는 클래스이다. 지속시간이므로, 날짜만으로는 구성이 불가능하다. 즉, Time요소가 들어간 데이터로만 Duration Class의 생성이 가능하다. 즉, 위의 초록색 상자에 들어간 클래스를 이용해서만 Duration Class를 만들 수 있다. Duration 생성 Duration은 Duration Class 내의 다양한 정적 메서드를 이용해 만들 수 있다. between 메서드 between 메서드는 두 시간 객체 사이의 차이를 이용해 duration을 만든다. val localTime1 = LocalTime.of(19, 30, 0); val..
목표 기계 관점에서의 시간이 무엇인지, 왜 필요한지 이해한다. Instant를 만들기 위해서 필요한 구성 요소를 이해한다. 개요 기계에서 사람이 사용하는 날짜와 시간을 사용하기 위해서는 많은 기준과 그에 대한 연산이 필요하기 때문에 사람이 사용하는 날짜와 시간을 사용하여 시간을 표현하지 않는다. 기계의 관점에서는 날짜와 시간 단위를 끊어서 기록하기 보다는 연속된 시간에서 기준 시간을 두고 특정 지점을 하나의 수로 표현하는 것이 자연스럽다. 또한 특정 시간을 하나의 수로 표현하는 방식으로 데이터를 저장해야 시간 데이터를 수월하게 관리할 수 있다. 예를 들어 1970년 1월 1일 0시 0분 0초 UTC+0 이라는 시간 단위는 년, 월, 일, 시, 분, 초, 시간대 라는 7개 단위로 이루어져 있다. 이 시간은..