Home

코틀린 타입 시스템

널 가능성널이 될 수 있는 타입어떤 타입이든 타입뒤에 ?를 붙이면 그 타입의 변수나 프로퍼티에 null 참조를 저장할 수 있다. 널 가능성이 있는 타입은 호출 가능한 메서드가 제한된다. 또한 파라미터에 널 가능성이 없는 타입이 선언된 경우 널 가능성이 있는 타입은 인자로 전달할 수 없다. 널 가능성이 있는 타입은 널 체크 이후 널 가능성이 없는 타입처럼 사

람다로 프로그래밍

람다 식과 멤버 참조람다 식의 문법코틀린의 람다 식은 항상 중괄호로 둘러 쌓여 있다. 그리고 인자 목록을 괄호로 싸지 않는다. 람다를 변수에 저장하고 함수처럼 사용할 수 있다. 123val sum = {x: Int, y: Int -> x + y}println(sum(1, 2)) 실행 시점에서 코틀린 람다 호출에는 아무 부가 비굥이 들

구글 엔지니어는 이렇게 일한다. 문화 편

구글 엔지니어는 이렇게 일한다 라는 책에서 필요한 부분을 읽고 기록해두는 포스트다. 많은 부분이 생략되어 있다. 혼자 일하지 말라초기 설계에는 근본적인 실수가 있을 수 있다. 바퀴를 재발명하려는 실수를 범할 수 있다. 우리가 올바른 일을 하고 있는지, 제대로 하고 있는지, 그리고 다른 누군가가 이미 해놓은 일을 아닌지를 확인해봐야 한다. 가능한 일찍 피드

코틀린의 클래스, 객체, 인터페이스

요약코틀린 인터페이스open, final, abstact가시성 변경자중첩 클래스와 봉인된 클래스뻔하지 않은 생성자와 프로퍼티를 갖는 클래스 선언데이터 클래스와 클래스 위임object 키워드 클래스 계층 정의코틀린 인터페이스코틀린의 인터페이스는 자바와 매우 유사하다. 상태를 가질 수 없지만 구현된 메서드(마치 디폴트 메서드)를 가질 수 있다. 인터페이스를

코틀린 함수 정의와 호출

이번 포스트에서는 코틀린의 컬렉션, 문자열, 정규식 영역에서 함수 정의와 호출을 알아보자. 요약함수를 사용하기 쉽게 만들기확장 함수확장 프로퍼티가변인자, 중위 호출로컬 함수 코틀린에서 컬렉션 만들기코틀린에서는 {컬렉션 종류}Of(~) 이런 형태로 쉽게 컬렉션을 만들 수 있다. 123val set = hashSetOf(1, 2, 3)va

자바 식의 결과 타입

10^6 개 중 중복 없이 2개를 조합하는 경우의 수를 계산하는 코드를 다음과 같이 작성했다.하지만 실행해보면 완전 엉뚱한 값이 반환된다. 123int a = Math.pow(10, 6);long b = a * (a - 1) / 2;System.out.println(b); //-364189984라는 값이 나온다. 음수가 나오는 것으로 봐서는 타입에서 감당할

코틀린 기초

요약함수와 변수클래스와 프로퍼티enum과 whenwhile과 for 루프예외 처리 기본 요소: 함수와 변수함수123fun {함수이름}({매개변수 이름}: {매개변수 타입}) : {반환값 타입} { ...} 반환값이 없는 함수 예시 123fun main(arg

널 오브젝트 패턴

1234Employee e = DB.getEmployee("Yang");if (e != null && e.isTimeToPay(today)) { e.pay();} 이런 식의 코드가 있다고 하자. 데이터베이스에서 조회하는 직원이 존재하지 않으면 null을 반환할 수 있기 때문에 조건문에서 먼저 null

퍼사드와 미디에이터 패턴

퍼사드 패턴퍼사드는 외관, 건물의 정면을 의미한다.퍼사드 패턴은 복잡하고 일반적인 인터페이스를 가진 객체 그룹을 간단하고 구체적인 인터페이스를 제공한다. DB를 활용하기 위해 java.sql 패키지의 복잡한 인터페이스를 가진 객체들을 상위 모듈에서 사용하기는 어렵다.이를 위해 퍼사드 역할을 하는 객체를 만들 수 있다. Application 입장에는 java

의존성 분리를 통해 설계 개선하기 2편 (우아한객체지향)

도메인 컨셉 문제점사용자가 가게에서 메뉴 A를 골라서 장바구니에 저장해놓은 상태에서 가게 주인이 메뉴 A의 세부 내용을 바꾸면 사용자 장바구니에 있는 메뉴 A와 가게에서 판매 중인 메뉴 A의 불일치가 생긴다.그래서 이제 주문할 때마다 사용자가 주문하려는 메뉴 A가 실제 가게에서 판매 중인 메뉴 A와 일치하는 지 검증하려고 한다. 주문 검증 메뉴 이름 &#x