코틀린 12

[프로그래머스] 자릿수 더하기 LV1 / kotlin

자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12931 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1차 시도 class Solution { fun solution(n: Int): Int { var answer = 0 if (n < 10) { answer = n } else { ..

Dev/Algorithm 2022.12.04

코드리뷰 - if else 줄이기

받은 리뷰 중에서 기억에 남는 코드 리뷰 이전 코드 val displayColor: Int get() = if (tier != null) { when { tier.isChoice -> R.color.choice_color else -> R.color.default_color } } else { R.color.default_color } 리뷰 코드 val displayColor: Int get() = when (tier?.isChoice) { true -> R.color.white else -> R.color.black } ? 를 통해서 null 체크 하는걸 알고 사용하면서도 가끔씩 약간 낯선(?) 상황을 만나면 나도모르게 몸에 베어있는 코드로 회귀(?)하게 된다.

카테고리 없음 2020.08.05

부족한 부분 참고

photo by Fabian Grohs on Unplash 1. BLE 통신 수단의 장단점?- 근거리 통신 수단으로 wi-fi, LTE 도 있을것인데, 그에 비해서 전력의 소모가 적다(Bluetooth조차도)- 대량 생산을 할 수 있게 가격이 저렴하다. 2. 함수형 프로그래밍이란? (뭐가 좋은지?)- 3. RxJava, EventBus 의 장단점? (왜 쓰는지?)- 4. 코틀린을 사용하면 뭐가 좋은가?- 5. 이 문제를 해결하기 위해서 어떤 생각들을 했는가?-> 어떻게 해결을 해야겠다, 이 문제의 목적은 이런것 같다 등의 부분들... (작성중....)

Dev/참고 2018.10.30

코틀린 - 고차 함수: 파라미터와 반환 값으로 람다 사용 (요약)

8장 고차 함수: 파라미터와 반환 값으로 람다 사용 (요약) - 함수 타입을 사용해 함수에 대한 참조를 담는 변수나 파라미터나 반환 값을 만들 수 있다.- 고차 함수는 다른 함수를 인자로 받거나 함수를 반환한다. 함수의 파라미터 타입이나 반환 타입으로 함수 타입을 사용하면 고차 함수를 선언할 수 있다.- 인라인 함수를 컴파일할 때 컴파일러는 그 함수의 본문과 그 함수에게 전달된 람다의 본문을 컴파일한 바이트코드를 모든 함수 호출 지점에 삽입해준다. 이렇게 만들어지는 바이트코드는 람다를 활용한 인라인 함수 코드를 풀어서 직접 쓴 경우와 비교할 때 아무 부가 비용이 들지 않는다.- 고차 함수를 사용하면 컴포넌트를 이루는 각 부분의 코드를 더 잘 재사용할 수 있다. 또 고차 함수를 활용해 강력한 제네릭 라이브..

Dev/Kotlin 2018.10.17

코틀린 - 연산자 오버로딩과 기타 관례 (요약)

7장 연산자 오버로딩과 기타 관례 - 코틀린에서는 정해진 이름의 함수를 오버로딩함으로써 표준 수학 연산자를 오버로딩할 수 있다. 하지만 직접 새로운 연산자를 만들 수는 없다.- 비교 연산자는 equals 와 compareTo 메소드로 변환된다.- 클래스에 get, set, contains 라는 함수를 정의하면 그 클래스의 인스턴스에 대해 [] 와 in 연산을 사용할 수 있다고, 그 객체를 코틀린 컬렉션 객체와 비슷하게 다룰 수 있다.- 미리 정해진 관례를 따라 rangeTo, iterator 함수를 정의하면 범위를 만들거나 컬렉션과 배열의 원소를 이터레이션할 수 있다.- 구조 분해 선을을 통해 한 객체의 상태를 분해해서 여러 변수에 대입할 수 있다. 함수가 여러 값을 한꺼번에 반환해야 하는 경우 구조 분..

Dev/Kotlin 2018.10.09

코틀린 - 코틀린 타입 시스템 (요약)

6장 코틀린 타입 시스템 - 코틀린은 널이 될 수 있는 타입을 지원해 NullPointerException 오류를 컴파일 시점에 감지할 수 있다.- 코틀린의 안전한 호출(?.), 엘비스 연산자(?:), 널 아님 단언(!!), let 함수 등을 사용하면 널이 될 수 있는 타입을 간결한 코드로 다룰 수 있다.- as? 연산자를 사용하면 값을 다른 타입으로 변환하는 것과 변환ㄴ이 불가능한 경우를 처리하는 것을 한꺼번에 편리하게 처리할 수 있다.- 자바에서 가져온 타입은 코틀린에서 플랫폼 타입으로 취급된다. 개발자는 플랫폼 타입을 널이 될 수 있는 타입으로도, 널이 될 수 없는 타입으로도 사용할 수 있다.- 코틀린에서는 수를 표현하는 타입(Int 등)이 일반 클래스와 똑같이 생겼고 일반 클래스와 똑같이 동작한다..

Dev/Kotlin 2018.09.30

코틀린 - 코틀린 타입 시스템 (정리)

코틀린 타입 시스템 (Kotlin In Action) - 코틀린의 타입 시스템은 코드의 가독성을 향상시키는 데 도움이 되는 몇 가지 특성을 제공한다.- 널이 될 수 있는 타입, 읽기 전용 컬렉션 ? - fun strLen(s: String) = s.length 일 경우, 해당 함수가 널과 문자열을 인자로 받을 수 있게 하려면 타입 이름 뒤에 물음표를 명시해야 한다. fun strLen(s: String?) ?. - 안전한 호출 연산자 -> null 검사와 메소드 호출을 한 번의 연상으로 수행하게 도와준다. ?: - 엘비스 연산자 -> null 대신 사용할 디폴트 값을 지정할 때 편리하게 사용 fun foo(s: String?) { val t: String = s ?: " " } as? - 안전한 캐스트 ..

Dev/Kotlin 2018.09.30

코틀린 - 람다로 프로그래밍(요약)

5장 람다로 프로그래밍 - 람다를 사용하면 코드 조각을 다른 함수에게 인자로 넘길 수 있다.- 코틀린에서는 람다가 함수 인자인 경우 괄호 밖으로 람다를 빼낼 수 있고, 람다의 인자가 단 하나뿐인 경우 인자 이름을 지정하지 않고 it 이라는 디폴트 이름으로 부를 수 있다.- 람다 안에 있는 코드는 그 람다가 들어있는 바깥 함수의 변수를 읽거나 쓸 수 있다.- 메소드, 생성자, 프로퍼티의 이름 앞에 ::을 붙이면 각각에 대한 참조를 만들 수 있다. 그런 참조를 람다 대신 다른 함수에게 넘길 수 있다.- filter, map, all, any 등의 함수를 활용하면 컬렉션에 대한 대부분의 연산을 직접 원소를 이터레이션하지 않고 수행할 수 있다.- 시퀀스를 사용하면 중간 결과를 담는 컬렉션을 생성하지 않고도 컬렉..

Dev/Kotlin 2018.09.27

코틀린 - 클래스, 객체, 인터페이스(요약)

4장 클래스, 객체, 인터페이스 - 코틀린의 인터페이스는 자바 인터페이스와 비슷하지만 디폴트 구현을 포함할 수 있고, 프로터티도 포함할 수 있다.- 모든 코틀린 선언은 기본적으로 final이며, public 이다.- 선언이 final이 되지 않게 만들려면(상속과 오버라이딩이 가능하게 하려면) 앞에 open을 붙여야 한다.- internal 선언은 같은 모듈 안에서만 볼 수 있다.- 중첩 클래스는 기본적으로 내부 클래스가 아니다. 바깥쪽 클래스에 대한 참조를 중첩 클래스 안에 포함시키려면 inner 키워드를 중첩 클래스 선언 앞에 붙여서 내부 클래스로 만들어야 한다.- sealed 클래스를 상속하는 클래스를 정의하려면 반드시 부모 클래스 정의 안에 중첩 클래스로 정의해야 한다.- 초기화 블록과 부 생성자를..

Dev/Kotlin 2018.09.25

커니의 코틀린 - 3장 (데이터 클래스)

데이터 클래스 : 자료를 저장하는 클래스를 만드는 과정을 단순하게 하기 위해서 제공하는 특별한 클래스 코틀린 data 클래스data class Person(val name: String, val address: String) Java VO 형태 클래스public class Person { private String mName; private String mAddress; public Person(String name, String address) { this.mName = name; this.mAddress = address; } public String getName() { return mName; } public void setName(String name) { this.mName = name; } ..

Dev/Kotlin 2018.07.16