전체 글
-
[kotlin in action] 연산자 오버로딩과 기타 관례프로그래밍 언어/kotlin 2021. 8. 13. 19:37
상호작용하는 클래스가 둘 이상이면, 다른 클래스에게 API를 제공하는 클래스가 적어도 하나 이상 있기 마련..! 7장 이후로는, 자신만의 API를 코틀린답게 만드는 방법을 배운다. 어떤 언어 기능이, 정해진 사용자 작성 함수와 연결되는 경우 (타입에 의존) ex) for ... in 루프에 java.lang.Iterable을 구현한 객체를 사용 try문에 java.lang.AutoCloseable 구현한 객체 사용 코틀린에서는 어떤 언어 기능이 어떤 타입(클래스)과 연관되기보다는, 특정 함수 이름과 연관된다. (관례에 의존) *관례 : 어떤 언어 기능과, 미리 정해진 이름의 함수를 연결해주는 기법 연산자 오버로딩 산술 연산자 오버로딩 이항 산술 연산 오버로딩 연산자를 오버로딩하는 함수 앞에는 꼭 oper..
-
[Kotlin In Action] 코틀린 타입 시스템프로그래밍 언어/kotlin 2021. 8. 6. 13:53
코틀린 원시 타입 소개와 자바 타입과 코틀린 원시 타입의 관계 코틀린 컬렉션 소개와 자바 컬렉션과 코틀린 컬렉션의 관계 타입 시스템 - 널이 될 수 있는 타입 - 읽기 전용 컬렉션 6.1 널 가능성 널이 될 수 있는지 여부를 타입 시스템에 추가함으로써 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지해서 실행 시점에 발생할 수 있는 예외의 가능성을 줄일 수 있다. 널이 될 수 있는 타입 널이 될 수 있는 타입을 명시적으로 지원한다. 어떤 변수가 null이 될 수 있다면, 그 변수에 대해 메소드를 호출하면 NullPointerException이 발생할 수 있으므로 안전하지 않다. 어떤 타입 이름 뒤에 물음표를 붙이면 그 타입의 변수나 프로퍼티에 null 참조를 저장할 수 있다는 뜻. 널이 될 수 있는 타입..
-
[Kotlin in Action] 람다로 프로그래밍프로그래밍 언어/kotlin 2021. 7. 26. 16:20
* 람다 : 다른 함수로 넘길 수 있는 작은 코드조각 공통 코드구조를 라이브러리 함수로 뽑아낼 수 있다. 5.1 람다 식과 멤버 참조 람다 : 코드블록을 함수의 인자로 넘기기 함수를 값처럼 사용. 함수를 직접 다른 함수에 전달. button.setOnClickListener(new OnClickListener() { // 무명 내부 클래스 선언 @Override public void onClick(View view) { } }) 람다는 메소드가 하나뿐인 무명 객체를 대신할 수 있다. 람다와 컬렉션 람다를 사용해서 컬렉션 검색 people.maxBy{ it.age } it.age -> 비교에 사용할 값을 돌려주는 함수 it 은 컬렉션의 원소를 가리킨다. 멤버 참조를 사용해 컬렉션 검색 people.maxB..
-
[Kotlin in action] 클래스, 객체, 인터페이스프로그래밍 언어/kotlin 2021. 7. 25. 16:03
인터페이스 [자바와 다른 점] 코틀린은 인터페이스에 프로퍼티를 선언할 수 있다. 코틀린 인터페이스 선언은 기본적으로 final, public 이다. 코틀린 중첩 클래스는 내부클래스가 아니어서 외부클래스에 대한 참조가 없다. 4.1 클래스 계층의 정의 자바는 final로 명시적으로 상속을 금지하는 클래스 외에, 모든 클래스는 다른 클래스가 상속할 수 있다. 그래서 문제가 발생할 여지가 있다. 취약 기반 클래스: 하위 클래스가 기반 클래스에 대해 가졌던 가정이 기반 클래스를 변경함으로써 깨져버린 경우. 기반 클래스를 변경하는 경우 하위 클래스의 동작이 예기치 않게 바뀔 수 있다. 따라서, 코틀린에서는 기본적으로 클래스와 메소드는 final 이다. 어떤 클래스에 대해 상속을 허용하려면 앞에 open 변경자를 ..
-
[Kotlin in Action] 함수의 정의와 호출프로그래밍 언어/kotlin 2021. 7. 13. 21:21
컬렉션 컬렉션 만들기 // 코틀린은 자체 컬렉션을 제공하지 않고 표준 자바 컬렉션을 활용하여 자바 코드와의 상호작용 쉽게 한다. val set = hashSetOf(1, 7, 53) // java.util.HashSet 의 객체 val list = arrayListOf(1, 7, 53) // java.util.ArrayList 의 객체 val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") // java.util.HashMap 의 객체 이름 붙인 인자 // 코틀린으로 작성한 함수를 호출할 때는 함수에 전달하는 인자 중 일부 또는 전부의 이름을 명시할 수 있다 println(joinToString(list, separator = "; ", p..
-
[코틀린 인 액션] 코틀린 기초프로그래밍 언어/kotlin 2021. 7. 6. 14:35
2.1 코틀린 맛보기 함수 자바와 달리 함수를 최상위 수준에 정의할 수 있다. 배열도 일반적인 클래스와 마찬가지로 사용 가능하다. println 과 같이 자바 표준 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼를 제공한다. 함수 기본 구조 블록이 본문인 함수 블록이 본문인 함수가 값을 반환할 때는, 반드시 변환 타입을 지정하고 return문을 사용해 반환 값을 명시해야 한다. fun max(a: Int, b: Int): Int { return if (a > b) a else b } 식이 본문인 함수 fun max(a: Int, b: Int): Int = if (a > b) a else b 반환 타입 생략 가능하다. 식이 본문인 함수의 경우, 굳이 사용자가 반환 타입을 적지 않아도 컴파일러가 함수 ..
-
[Kotlin] 코루틴을 이해해보자프로그래밍 언어/kotlin 2021. 7. 4. 00:44
새차원님의 코틀린 코루틴 강좌와 공식문서의 코루틴 부분을 참고하여 정리한 내용입니다. 1. Why Coroutines? 코루틴 : 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴. - 메인스레드가 블로킹될 수 있는 부분에 대해서 도움을 준다. - 비동기 처리 코드를 순차적인 코드로 만들 수 있다. ( by replacing callbacks ) - 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음 장소에서 실행을 재개한다. api를 호출한 후, data로 ui 업데이트 하는 코드 main 스레드에서 api 호출하면 ui 스레드가 블로킹 되어 화면을 그릴 수 없게 되고, 앱은 죽게 된다. 잘 동작하지만 dream code 는 아님 콜백도 없고..
-
[부스트 코스] scope - BE카테고리 없음 2020. 6. 7. 17:23
4가지 scope Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용 Page : 페이지 내에서 지역변수처럼 사용 페이지 영역은, 서블릿1 서블릿2 등 각각이 가진 페이지 영역을 말하고, request 영역은 하나의 요청이 들어와서 응답이 나갈때까지의 범위를 말한다. session 영역은 세션 객체가 만들어져서 소멸할때까지를 말한다. 요청이 여러개가 들어와도, 계속 남아있는 scope이다. 뒤에서 상태 유지를 할 때 사용하는 scope가 session scope 이다. application 범위는 ..