일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코딩 테스트
- 알고리즘
- H-index
- @Setter
- 전화번호 목록
- 해시
- 롬복 어노테이션
- 기능개발
- 영속 자료구조
- 루씬 인 액션
- Java
- @Getter
- 검색 기능 확장
- 정렬
- @Data
- K번째수
- 크론 표현식
- 커링
- kubenetes
- 스택/큐
- 쿠버네티스
- 프로그래머스
- 다리를 지나는 트럭
- 모던 자바 인 액션
- @EnableScheduling
- 완주하지 못한 선수
- 고차원 함수
- @configuration
- 스프링 스케쥴러
- 가장 큰 수
- Today
- Total
목록전체 글 (134)
Today I Learned
함수 확장 코틀린의 Function은 andThen() 메소드를 가지고 있지 않지만, 인젝트해서 사용할 수 있다. fun ((T) -> R).andThen(next: (R) -> U): (T) -> U = { input: T -> next(this(input)) } fun increment(number: Int): Double = number + 1.toDouble() fun double(number: Double) = number * 2 val incrementAndDouble = ::increment.andThen(::double) println(incrementAndDouble(5)) //12.0 ::구문을 이용한 increment()의 참조에 andThen() 메소드를 호추랬고, double() ..
연산자 오버로딩 코틀린에서는 +, -, * 같은 연산자를 오버로딩해서 숫자 타입 뿐만 아니라 객체에도 사용할 수 있다. operator fun Pair.plus(other: Pair) = Pair(first + other.first, second + other.second) 연산자를 오버로딩하기 위해서 함수는 operator 키워드로 정의되어 있어야 한다. 연산자와 대응하는 메소드 이름은 아래 표와 같다. 연산자 대응하는 메소드 주의사항 +x x.unaryPlus() -x x.unaryMinus() !x x.not() x + y x.plus(y) x - y x.minus(y) x * y x.times(y) x / y x.div(y) x % y x.rem(y) ++x x.inc() x는 할당 가능해야 함 ..
외부 반복자 vs 내부 반복자 val numbers = listOf(10, 12, 15, 17, 18, 19) for (i in numbers) { if (i % 2 == 0) { print("$i, ") //10, 12, 18, } } 전통적인 외부 반복자(for..in)에서 리스트의 짝수만 출력하려고하면 위와 같이 변수 i를 사용해서 확인한다. numbers.filter { e -> e % 2 == 0 } .forEach { e -> print("$e, ") } //10, 12, 18, 코틀린 스탠다드 라이브러리는 콜렉션에 몇 가지 확장 함수를 추가했다. 위 예제에서는 구 중 filter()와 forEach()를 사용한다. 위와 같이 내부 반복자를 샅용하면 더 간결하고 읽기 쉽다. 두 스타일의 차이점..
비지역성(non-local)과 라벨(labeled) 리턴 리턴은 허용되지 않는 게 기본이다 람다에서 return은 허용되지 않지만 특별한 상황에서는 사용할 수 있다. fun invokeWith(n: Int, action: (Int) -> Unit) { println("enter invokeWith $n") action(n) println("exit invokeWith $n") } fun caller() { (1..3).forEach { i -> invokeWith(i) { println("enter for $it") if (it == 2) { return } //ERROR, return is not allowed here println("exit for $it") } } println("end of ca..