Kotlin에서 with 키워드 사용

David Mbochi Njonge 2023년6월20일
  1. Kotlin 프로젝트 생성
  2. Kotlin에서 객체를 명시적으로 호출
  3. Kotlin에서 with 키워드를 사용하여 반환 값 없이 암시적으로 객체 호출
  4. with 키워드를 사용하여 Kotlin에서 반환 값으로 객체를 암시적으로 호출
  5. 결론
Kotlin에서 with 키워드 사용

객체지향 프로그래밍에서 우리는 객체가 속성과 메서드로 구성되어 있음을 배웠습니다. 이러한 세부 정보에 액세스하려면 .을 사용하여 명시적으로 호출합니다. 연산자를 입력한 다음 필드 또는 속성 이름을 제공합니다.

이것은 개체 작업을 할 때 대부분의 프로그래밍 언어에서 일반적으로 사용되는 접근 방식이지만 유일한 방법은 아닙니다. 제네릭 및 람다 식을 사용하여 개체의 멤버 속성 및 메서드를 암시적으로 호출할 수 있습니다.

이 자습서에서는 개체의 멤버 속성 및 메서드를 암시적으로 호출하는 방법을 알려줍니다.

Kotlin 프로젝트 생성

IntelliJ 개발 환경을 열고 파일 > 새로 만들기 > 프로젝트를 선택합니다. 열리는 창에서 프로젝트 이름을 kotlin-with로 입력하고 언어 섹션에서 Kotlin을 선택하고 빌드 시스템 섹션에서 Intellij를 선택합니다.

src/main/kotlin 폴더 아래 Main.kt라는 파일을 만들고 다음 코드를 복사하여 파일에 붙여넣습니다.

data class Music(val id: Int,
                 val title: String,
                 val genre: String,
                 val duration: Int);

fun fetchMusic(): ArrayList<Music>{
    return arrayListOf(
        Music(1,"Passing me by","Hip hop",5),
        Music(2,"Lose yourself","Hip hop",3),
        Music(3,"Smoke on the water","Classic songs",6),
        Music(4,"Born to the wild","Classic songs",2),
        Music(5,"Real love","Rhythm and blues",6)
    );
}

이 코드는 Music 데이터 클래스를 사용하여 생성된 객체의 ArrayList를 반환하는 fetchMusic()이라는 메서드를 생성합니다. fetchMusic() 음악 메서드에서 반환된 목록을 사용하여 다음 섹션에서 예제를 설명합니다.

Kotlin에서 객체를 명시적으로 호출

fetchMusic() 메서드 뒤에 Main.kt 파일에 다음 코드를 복사하여 붙여넣습니다.

fun callingAnObject(){
    val songs = fetchMusic();
    songs.forEach(::println);
}

fun main(){
    callingAnObject();
}

callingAnObject()라는 함수는 위에서 만든 목록을 사용하여 forEach() 메서드를 명시적으로 호출하여 목록의 모든 항목을 콘솔에 기록합니다. 이전 섹션에서 언급한 대로 목록 객체 songs.forEach()를 명시적으로 호출하는 방법에 유의하십시오.

다음 섹션에서는 멤버 변수 또는 메서드에 액세스하기 위해 songs 개체를 암시적으로 호출하는 방법을 살펴봅니다. 이 예제를 실행하고 출력이 아래와 같은지 확인하십시오.

Music(id=1, title=Passing me by, genre=Hip hop, duration=5)
Music(id=2, title=Lose yourself, genre=Hip hop, duration=3)
Music(id=3, title=Smoke on the water, genre=Classic songs, duration=6)
Music(id=4, title=Born to the wild, genre=Classic songs, duration=2)
Music(id=5, title=Real love, genre=Rhythm and blues, duration=6)

Kotlin에서 with 키워드를 사용하여 반환 값 없이 암시적으로 객체 호출

이전 예제를 주석 처리하고 주석 뒤에 다음 코드를 복사하여 Main.kt 파일에 붙여넣습니다.

fun usingWithWithoutReturnValue(){
    val songs = fetchMusic();
    with(songs){
        println(isEmpty());
        println(add(Music(6,"Many rivers to cross","reggae",3)))
        println(forEach(::println));
    }
}

fun main(){
    usingWithWithoutReturnValue();
}

우리는 일반적으로 이 예제와 같이 객체를 암시적으로 호출하려는 경우 Kotlin에서 with() 함수를 사용합니다. 목록의 개체를 사용하지 않고 암시적으로 isEmpty(), add()forEach() 메서드를 호출하는 방법에 유의하십시오.

with() 함수는 이 목록을 수신자로 사용하고 우리가 요청하면 뒤에서 목록의 필드나 메서드를 호출하고 결과가 반환됩니다. 이 사용 사례에서 with() 함수는 값을 반환하지 않고 콘솔에 기록합니다.

다음 섹션에서는 배후에서 이루어진 호출 결과를 반환하는 방법을 살펴보겠습니다. 이 예제를 실행하고 출력이 아래와 같은지 확인하십시오.

false
true
Music(id=1, title=Passing me by, genre=Hip hop, duration=5)
Music(id=2, title=Lose yourself, genre=Hip hop, duration=3)
Music(id=3, title=Smoke on the water, genre=Classic songs, duration=6)
Music(id=4, title=Born to the wild, genre=Classic songs, duration=2)
Music(id=5, title=Real love, genre=Rhythm and blues, duration=6)
Music(id=6, title=Many rivers to cross, genre=reggae, duration=3)

with 키워드를 사용하여 Kotlin에서 반환 값으로 객체를 암시적으로 호출

이전 예제를 주석 처리하고 주석 뒤에 다음 코드를 복사하여 Main.kt 파일에 붙여넣습니다.

fun usingWithContainingReturnValue(): Music {
    val songs = fetchMusic();
    val song = with(songs) {
        get(1)
    }
    return song;
}

fun main(){
    println(usingWithContainingReturnValue());
}

이전 예제에서 우리는 with()가 뒤에서 이 목록의 속성 또는 메서드를 호출하고 호출 결과를 반환한다고 언급했습니다. 이 예는 호출에 의해 반환된 결과를 검색하는 방법을 보여줍니다.

이 예제에서는 with() 메서드를 사용하여 songs 개체를 명시적으로 호출하여 get() 메서드를 사용하여 인덱스 1에 있는 개체를 반환했습니다. 개체를 사용하지 않고 with() 함수 내에서 get() 메서드를 호출하는 방법에 유의하십시오.

둘러싸는 함수에 의해 반환되는 객체는 Music 유형입니다. 이 코드를 실행하고 출력이 아래와 같은지 확인하십시오.

Music(id=2, title=Lose yourself, genre=Hip hop, duration=3)

결론

이 자습서에서는 개체를 암시적으로 호출하는 데 도움이 되는 with() 메서드를 사용하는 방법을 배웠습니다. 우리가 다룬 두 가지 사용 사례에는 반환 값 없이 암시적으로 개체를 호출하는 것과 반환 값을 사용하여 암시적으로 개체를 호출하는 것이 포함됩니다.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

관련 문장 - Kotlin Keyword