코틀린
-
[Kotlin] 고차 함수Kotiln 2020. 6. 30. 14:53
고차 함수 정의 고차 함수 는 다른 함수를 인자로 받거나 함수를 반환하는 함수이다. 표준 라이브러리 함수인 filter 는 술어 함수를 인자로 받으므로 고차 함수이다. 함수 타입 함수 타입을 정의하려면 함수 파라미터의 타입을 괄호 안에 넣고 그 뒤에 화살표 -> 를 추가한 다음, 함수의 반환 타입을 지정한다. (Int, String) -> Unit 함수 타입에서도 반환 타입을 nullable로 지정할 수 있다. val canReturnNull: (Int) -> Int? = {null} 함수 타입 전체가 null이 되게 선언할 수도 있다. val funOrNull: ((Int, Int) -> Int)? = null 함수 타입에서 파라미터 이름을 지정할 수도 있다. fun performRequest(url:..
-
코틀린 - 함수의 정의와 호출Kotiln 2019. 7. 24. 11:23
코틀린에서 컬렉션 만들기 setOf, arrayListOf, hashMapOf 등의 함수를 이용하여 컬렉션을 생성할 수 있다. 코틀린은 자신만의 컬렉션을 기능을 제공하지 않는다. 기존 자바의 컬렉션을 활용할 수 있다. 함수를 호출하기 쉽게 만들기 이름 붙인 인자 함수 호출 부분의 가독성을 늘리기 위해 인자에 이름을 붙일 수 있다. joinToString(collection, separator = " ", prefix = " ", postfix = ".")호출 시 인자 중 어느 하나라도 이름을 명시하고 나면 혼동을 막기 위해 그 뒤에 오는 모든 인자는 이름을 꼭 명시해야 한다. 디폴트 파라미터 값 fun joinToString( collection: Collection, separator: String =..
-
코틀린 - 연산자 오버로딩과 기타 관례Kotiln 2019. 7. 23. 10:54
어떤 언어 기능과 미리 정해진 이름의 함수를 연결해주는 기법을 관례 라고 부른다 이항 산술 연산 오버로딩 연산자를 오버로딩하는 함수 앞에는 꼭 operator 키워드를 붙여야 한다. operator 키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 할 수 있다. 코틀린에서는 직접 연산자를 만들어 사용할 수 없고 언어에서 미리 정해둔 연산자만 오버로딩할 수 있으며 관례에 따르기 위해 클래스에서 정의해야 하는 이름이 연산자별로 정해져 있다. 식 함수 이름 a * b times a / b div a % b mod (1.1 부터 rem) a + b plus a - b minus 코틀린은 표준 숫자 타입에 대해 비트 연산자를 정의하지 않는다. 따라서 커스텀 타입에서 비트 연산자를 정의할 수도 없다. ..
-
코틀린 타입 시스템 - 컬렉션과 배열Kotiln 2019. 7. 22. 10:03
null 가능성과 컬렉션 컬렉션 타입 인자에 ? 를 붙이면 컬렉션에 null 을 저장할 수 있다. List 는 리스트 안의 각 값이 null이 될 수 있다 는 의미이고 List? 는 전체 리스트가 null이 될 수 있다는 의미이기 때문에 조심해야 한다. filterNotNull 함수는 null이 될 수 있는 값으로 이뤄진 컬렉션에서 null 값을 걸러준다. 읽기 전용과 변경 가능한 컬렉션 코틀린은 컬렉션 안의 데이터에 접근하는 인터페이스와 컬렉션 안의 데이터를 변경하는 인터페이스가 분리되어 있다. kotlin.collections.Collection 인터페이스 와 kotlin.collections.MutableCollection 인터페이스로 나뉜다. 객체의 배열과 원시 타입의 배열 코틀린 배열은 타입 ..
-
코틀린 타입 시스템 - 원시 타입Kotiln 2019. 7. 19. 17:44
코틀린 타입 시스템 - 원시 타입 원시 타입 자바는 원시 타입 (int 등) 과 참조 타입 (String 등) 을 구분하고 참조 타입이 필요한 경우 원시 타입 갑을 래퍼 타입으로 감싸서 사용한다. 코틀린은 원시 타입과 래퍼 타입을 구분하지 않으므로 항상 같은 타입을 사용한다. val i: Int = 1 val list: List = listOf(1, 2, 3)더 나아가 코틀린에서는 숫자 타입 등 원시 타입의 값에 대해 메소드를 호출할 수 있다. 대부분의 경우 코틀린의 Int 타입은 자바 int 타입으로 컴파일 된다. 컴파일이 불가능할 경우는 컬렉션과 같은 제네릭 클래스를 사용하는 경우뿐이다. null이 될 수 있는 원시타입 null 참조를 자바의 참조 타입의 변수에만 대입할 수 있기 때문에 null 이 ..
-
코틀린 타입 시스템 - null 관련Kotiln 2019. 7. 19. 16:05
null 가능성(nullability) 은 NullPointerException 오류를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성이다. null이 될 수 있는 타입 변수의 타입 뒤에 ? 를 붙이면 null 참조를 저장할 수 있다는 뜻이다. var x: String? = null?. 안전한 호출 연산자 ?. 연산자는 null 검사와 메소드 호출을 한번의 연산으로 수행한다. var allCaps: String? = s?.toUpperCase()?: 엘비스 연산자 null 대신 사용할 디폴트 값을 지정할 때 사용한다. var str: String = s ?: "" // s가 null 이면 빈 문자열("")이다as? 안전한 캐스트 값을 대상 타입으로 변환할 수 없으면 null을 반환한다. var foo..