고차함수 란 ? 고참함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수이다. 코틀린에서는 람다나 함수 참조를 사용해 함수를 값으로 표현할 수 있다. 함수 타입 코틀린에서 함수 타입을 정의하려면, 함수 파라미터의 타입을 괄호 안에 넣고, 그 뒤에 화살표를 추가 한 뒤 함수 반환 타입을 지정하면 된다. - (Int, String) -> Unit 반환 타입이 널이거나, 함수 타입 전체가 널일 수 있는 변수를 선언할 때는 주의해야 한다. - (Int, Int) -> Int? : 반환 타입이 널 - ((Int, Int) -> Int?)? : 함수 타입 전체가 널 파라미터 이름과 함수 타입 함수 타입에서 파라미터 명을 지정할 수 있다. 강제적인 것은 아니며, 호출하는 쪽에서 원하는 파라미터 명으로 변경하여 사용..
서론 자바에서는 for..in 루프에 java.lang.Iterable 구현체를 사용하거나, try-with resource 구문에 java.lang.AutoCloseable 구현체를 사용할 수 있다. 이와 비슷하게 코틀린에서도 언어의 기능이 사용자가 작성한 함수와 연결되는 몇가지가 있으며 이를 살펴본다. 산술연산자 오버로딩 코틀린에서 관례를 사용하는 가장 단순한 예는 산술연산자 이다. BigInteger 클래스를 다룬다면 add 함수 호출보단 + 연산하는것이, 컬렉션에 원소를 추가하는 경우 += 이 가능하다면 더 직관적이다. 코틀린에서는 이러한 것들이 가능하다. 이항 산술연산 오버로딩 코틀린에서는 plus 라는 이름의 메소드를 정의하면, 해당 인스턴스에 대해 + 연산자를 사용할 수 있다. 이때 plus..
널 가능성 널 가능성 (Nullablility) 은 NPE를 피하기 위한 코틀린 타입 시스템의 특성이다. 코틀린을 비롯한 최신 언어에서는 null을 컴파일 타임에 미리 감지해 런타임 예외 가능성을 줄인다. 널이 될 수 있는 타입 코틀린 타입 시스템은 널이 될수 있는 타입을 명시적으로 지원한다. 널이 될 수 있는 변수에 대해 메소드 호출을 하지 못하게 함으로써 많은 오류를 방지한다. /** * null 이 올수 있는 타입을 넣을 경우 컴파일 에러를 발생시켜 NPE를 방지한다. */ fun strLen(s: String) = s.length fun strLenNullable(s: String?) = s.length fun main(args: Array) { // null 이 올 수 있는 타입을 넣을 경우 컴..
람다란 ? 람다식 (lambda expression) 은 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각 이다. 람다를 사용하면, 공통 코드 구조를 라이브러리화 하기 쉽다. 코틀린 표준 라이브러리는 람다를 아주 많이 사용한다. 람다 소개 - 코드 블록을 함수 인자로 넘기기 자바에서는 익병 내부 클래스를 통해 코드를 함수에 넘기거나 변수에 저장하는 방식을 사용했다. - 클래스를 선언하고, 클래스를 인스턴스화 해서 함수에 넘기는 방법을 채용 - 이는 매우 번거로운 일이다. 함수형 프로그래밍에서는 함수를 값 처럼 다룰수 있는것이 핵심 - 함수를 직접 다른 함수에 전달할 수 있다. `java` button.setOnClickListener(new OnClickLisntener() { @Override pu..