Kotlin 표준 라이브러리에서는 Result 클래스를 제공한다. Result는 실행한 동작의 결과를 Result로 감싸서 처리를 다른 클래스에 위임하는 것이 목적인 클래스이다. Result와 Result의 확장함수를 통해 유연하게 성공 및 실패를 처리할 수 있다. 작업을 수행하기 위한 방법으로는 대표적인 try-catch도 있고, Kotlin 1.3v에서 추가된 Result를 반환하는 inline 함수, runCatching도 있다. 이번 포스팅에서는 Result, 여러가지 Result 함수를 소개한다. 사전 지식 : runCatching runCatching은 코틀린 1.3v에서 도입된 캡슐화 블록이다. runCatching 블록 안에서 성공/실패 여부가 캡슐화된 Result 형태로 반환한다. try..
다중 모듈 프로젝트를 도입하면서, 각 모듈에서 참조하는 종속성과 종속성간 버전 관리에 대해서 생각해보게 되었다. 그러던 중 Now in Android에서 Version Catalog를 통해서 중앙에서 종속성 버전 관리를 하고 있는 것을 알게되었다. 이번에는 Version Catalog의 소개와 해당 Version Catalog를 도입하는 방법에 대해서 포스팅하려고 한다. What is Version Catalog? A version catalog is a list of dependencies, represented as dependency coordinates, that a user can pick from when declaring dependencies in a build script. Version..
[문제] 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다.만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다.만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다.만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리..
[문제] 정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다. 정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다. [입력 조건] numbers의 길이는 4보다 크거나 같으며, 백만보다 작거나 같다. 각 number의 값은 1보다 크거나 같으며 백만보다 작거나 같다. [해설] 배열을 순회하며, 현재 인덱스의 뒤큰수를 찾는것이 아닌, 현재 배열의 값을 뒤큰수를 가지는 인덱스를 찾는 것이 핵심이다. 스택을 활용하여, 현재 배열의 값을 뒤큰..
이번 프로젝트에서 처음으로 Multi Module Project를 도입했다. 다중 모듈 프로젝트란 하나의 app Module이 아닌, 여러개의 모듈로 구성되어 있는 프로젝트를 의미한다. 모듈 간 화면 전환을 다른 Feature 모듈의 의존성 없이 구현하기 위해 사용한 방법을 포스팅하려고 한다. 지금 하고 있는 프로젝트의 기본적인 View 단위는 Fragment로 구성되어 있고, 따로 소셜 로그인 및 로그아웃/회원삭제를 위해 Activity를 추가적으로 사용하고 있다. 따라서 화면 전환에서 필요한 기능은 여러개의 모듈을 넘나들면서, Activity를 전환해야할 뿐만 아니라, nav graph에 종속되지 않고 자유롭게 Fragment간 전환할 수 있는 기능을 필요로 한다. 예를 들면, 사전 모듈의 주류 정보..
안드로이드 개발을 하다보면 여러개 View의 데이터를 서로 공유해야하는 상황이 꼭 발생한다. 예를 들면 회원가입 페이지에서 여러개의 화면에서 사용자의 정보를 입력받을 때, 각 화면에서는 하나의 정보(전화번호, 이름)을 받아도 이전의 화면에서 받았던 정보를 저장해야 한다. 안드로이드에서는 다양한 방법으로 각 화면간의 데이터가 공유가 가능하다. 몇가지 방법을 예시와 함께 소개하며, 편의를 위해 가장 많이 사용하는 Fragment를 기준으로 작성하였다. 아래의 방식 외에도 추가적으로 공유하는 방법이 존재할 수 있으며, 장점과 단점을 파악하여 알맞는 방법을 선택하는 것이 중요하다. 1. Navigation Argument 첫번째 방법은 Navigation Component의 Safe Args를 이용하거나 Bun..