Kotlin
-
[Kotlin]확장 함수(Extension Functions)Kotlin 2023. 4. 20. 20:57
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 해당 클래스의 멤버함수인 것처럼 개발자가 함수를 정의해서 사용할 수 있는 것 fun String.hello() : String{ return "Hello! $this" } - hello()라는 함수는 실제로 String 내부에 존재하는 함수가 아니지만 String변수명.hello()를 통해 호출할 수 있음 - 여기서 String은 Receiver Type으로 this를 통해 Receiver Type에 접근할 수 있음 val str = "abc" println(str.hello()) - 위 코드를 실행하면 Hello! abc가 출력됨 *만약 확장 함수 이외에 확장함수와 동일한 이름의 멤버함수가 있다면? - 멤버함수를 우선적으로 호출(즉, 확장함수는 ..
-
[Kotlin]범위 지정 함수(apply, run, with, let, also)Kotlin 2023. 3. 26. 22:26
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수 - 즉, 블록은 특정 객체에 대한 작업의 범위가 되므로 범위 지정 함수라고 부름 - 다른 말로 수신객체 지정 람다(함수)라고도 부름 - 수신객체를 명시하지 않거나 it으로 접근하는 것만으로도 람다 안에서 수신객체의 메서드를 호출할 수 있도록 하기 때문 - 이것이 가능한 이유는 블록 람다식에서 수신객체를 람다의 입력 파라미터 또는 수신객체로 사용했기 때문 - 장점 : 코드 간결화, 가독성 증가 - 수신객체 내부 프로퍼티 변경 후 수신객체 자체를 반환받기 위해 사용하는 함수 - 리턴값 : 수신객체 자체 - 수신객체 접근 : 블록에서 명시하지 않거나 this를 사용해서 접근 가능 va..
-
[Kotlin]람다표현식Kotlin 2023. 3. 26. 21:54
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 익명함수를 의미(즉, 이름이 없거나 이름을 생략한 함수) - 재사용되지 않는 함수 만들 때 사용하기 좋음 - 함수형 프로그래밍에서 사용 - 장점 : 가독성 증가 - 1. 매개변수가 없는 익명함수 val 함수명 = fun(){ } val 함수명: () -> Unit = {} 함수명() //익명함수 호출 - 2. 매개변수 값 받고 값을 리턴하는 익명함수 val 함수명: (매개변수1 자료형, 매개변수2 자료형) -> 반환형 = {매개변수명1, 매개변수명2 -> 리턴값} val 변수명 = 함수명(매개변수1 값, 매개변수2 값)//함수 리턴값을 변수에 넣음 println(변수명) //예제 val temp: (String, String) -> String =..
-
[Kotlin]데이터 클래스(Data Class)Kotlin 2023. 3. 26. 21:21
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다] - 그동안 데이터 클래스를 자주 사용했지만 막상 데이터 클래스에 대해 설명해야 한다고 생각해보니 잘 모르는 거 같아서 정리해보려고 한다 - 데이터 보관을 주 목적으로 하는 클래스 - toString(), hashCode(), equals(), copy() 메서드를 자동으로 만들어주는 클래스 - class 키워드 앞에 data를 붙이면 됨 - 상속 불가 - val 또는 var로만 선언 가능 - abstract, open, sealed, inner, internal 붙이기 불가능 - 1개 이상의 프로퍼티 가지고 있어야 함 - equals(), toString(), hashCode()에 오버라이드 구현 시 구현 함수 사용 data class Member( ..