Kotlin

[Kotlin] 유용한 함수 with / run

sian han 2022. 11. 15. 11:18

▶ with

with 함수는 인자로 받는 객체를 this 로 사용할 수 있다. 

 

class withTestClass {
    var number = 10

    fun sum(a:Int,b:Int): Int{
        return a+b
    }
}

fun main(args:Array<String>){
    var testClass = withTestClass()
    var num = with(testClass){
        number = number + 10
        sum (10,number) 
    }
    println(num) //30
}

객체를 생성하고 이것을 with 함수의 인자로 넘겨받았다.

그리고 with 로 시작한 코드블록에서 실제로 testClass 의 객체를 this 로 사용할 수 있게 되었다.

멤버변수인 number 의 값을 10 늘려주고, sum 메소드를 클래스 내부에서 사용하는 것처럼 호출하였다.

그리고 sum 의 리턴값을 리턴해주었다. with 는 코드블록의 리턴값을 리턴하므로 main 함수의 num에는 30이 들어가게 된다.

 

 

 

▶ Run

호출방법 1.  그냥 호출

    var num1 =run{
        1+2
    }
    println(num1)//3

    run{
        var a =10
        println(a) //10
    }

 

호출방법 2. 객체에서 호출

  - 자신을 호출하는 객체를 this 처럼 사용할 수 있다

class RunTestClass {
    var number = 10

    fun sum(a: Int, b: Int): Int {
        return a + b
    }
}

//main
    var testObj = RunTestClass()
    var num2 = testObj.run{
        number += 20
        sum(number,20)
    }
    println(num2) //50