본문 바로가기

Language/Kotlin10

제네릭(Generic) 제네릭(Generic) 제네릭(Generic) 은 클래스 내부에서 사용할 자료형을 나중에 인스터스를 생성할 때 확정합니다. 제네릭이 나오게 된 배경은 자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 적당한 자료형을 선택할 수 있도록 하기 위해서 입니다. 제네릭 장점 제네릭을 사용하면 객체의 자료형을 컴파일할 때 체크하기 때문에 객체 자료형의 안전성을 높이고 형 변환의 번거로움이 줄어듭니다. 1. 타입 파라미터 제약 타입 파라미터 제약(type paramter constraint) 은 클래스나 함수에 사용할 수 있는 타입 인자를 제한하는 기능이다. 어떤 타입을 제네릭 타입의 타입 파라미터에 대한 상한(upper bound)으로 지정하면 그 제네릭 타입을 인스터스화할 때 시용하는 .. 2022. 5. 18.
Kotlin - 확장함수(Extension Functions) 확장함수(Extension Functions) Extension functions(확장 함수)는 기존에 정의된 클래스에 함수를 추가하는 기능입니다. 확장 함수를 사용법 코틀린은 클래스에 함수를 확장하는 Extension functions(확장함수)를 제공하기 때문에 List 클래스에 getHigherThan() 함수를 추가할 수 있습니다. 확장 함수는 fun 클래스이름.함수이름(인자타입): 리턴타입 { 구현부 }으로 정의할 수 있습니다. 아래코드는 확장함수를 이용하여 List 클래스에 getHigherThan()를 추가한 코드입니다. 함수를 추가하려는 클래스는 List이고, 함수 이름은 getHigherThan입니다. 함수의 인자는 num: Int이고, 리턴타입은 List입니다. 그래서 fun List... 2022. 5. 15.
코틀린(Kotlin) 범위 지정 함수(Scope Function) 정리 범위 지정 함수 코틀린은 표준 라이브러리는 Scope Function 지원하고 있습니다. 객체 컨텍스트 내에서 코드 블럭에 여러 함수를 포함시켜 실행합니다. 제공된 람다식을 사용하여 객체에서 이런함수를 호출하면 임시범위가 형성됩니다. 이 범위에선 이름없이 객체이 접근할수 있습니다. 이런 함수를 범위함수(Scope Function)라고 하며 let,run,with,apply,also 제공됩니다. 이제 범위함수 사용법에 대해 하나하나씩 알아보도록 하겠습니다. Context Object : this 또는 it Scope Function 의 람다식 내부에선 실체 객체의 이름 대신 this 또는 it로 사용해서 참조할수 있습니다. 1. let() 함수란? let 함수는 let 함수를 호출하는 수신자의 객체를 블록.. 2022. 5. 14.
Inline ,Infix 함수 1. Infix Function Infix 함수는 두개의 변수 가운데 오는 함수를 말합니다. Infix함수들중에 Pair를 만들때 to 가 있습니다. 밑에 예시를 보고 진행하겠습니다. mapOf를 사용하여 key와value 값을 넣어 출력하는것을 확인할수있습니다. 위에는 Pair로 사용하였고, 밑에는 Infix to 사용하여 key와 value 값을 넣었습니다. Infix 함수는 Infix fun dispatcher.함수이름(receiver): 리턴다입{ 구현부 } 정의하는 형식입니다. Infix dispatcher 함수전 오는 객체, receiver 함수 뒤에 오는 객체를 정의합니다. 2. Inline Function 인라인 함수는 함수가 호출되는 곳에 함수 본문의 내용을 모두 복사해 넣어 함수의 분기.. 2022. 5. 13.