본문 바로가기
언어/Kotlin

[Kotlin 문법 종합] - 확장함수, 비동기 프로그래밍 @@@수정하기

by 젼젼39 2024. 3. 6.

1. 확장함수

    : 기존 클래스에 쉽게 메소드 추가가 가능         //지금까지는 클래스에 원하는 메소드를 다 정의하고 시작했음

    - 자바와 달리 외부에서 클래스의 메소드 추가 가능

    (+) 내 목적을 위해 외부에서 관리해, 원본 클래스의 일관성 유지 가능

    (-) 과도한 사용 시 가독성 해침

    *주의사항

        1) 확장함수는 public 멤버에만 접근 가능

        2) private, protect 멤버에 접근하려면 클래스 내부 멤버함수 형태가 적합           //-> getter setter st인듯...

        3) 클래스의 멤버함수처럼 상속할 수 없음  =  하위 클래스에서 확장함수를 리디파인(오버라이드) 불가능

fun String.isEmailValid(): Boolean {
    val pattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+"
    return matches(pattern.toRegex())
}

    *예시 : 이름 나이만 출력하는 displayInfo 메소드가 있는데, 추가로 등급까지 조회하려면

fun main() {
    fun Student.getGrade() = println("학생의 등급은 ${this.grade} 입니다") 		//메소드 만들기
    var student = Student("참새", 10, "A+")
    student.displayInfo()
    student.getGrade()
}

class Student(name: String, age: Int, grade: String) {
    var name: String
    var age: Int
    var grade: String

    init {
        this.name = name
        this.age = age
        this.grade = grade
    }

    fun displayInfo() {
        println("이름은 ${name} 입니다")
        println("나이는 ${age} 입니다")
    }
}

        

 

2. 비동기 프로그래밍

    : 여러 로직들이 완료 여부에 관계없이 실행됨

        - 다양한 일을 한 번에 수행

    * 동기 프로그래밍 : 순서대로 하나의 작업씩 수행하는 행위

        - 순차적으로 수행하기 때문에 이전 작업의 영향을 받음

        - 이전 작업이 완료되지 않으면 이후 작업을 수행할 수 없음

    ==> 반드시 동기적이지 않아도 되면 비동기적으로 수행하는 것이 좋음