learned

ํ˜ธ์ถœ ํด๋ž˜์Šค์™€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ ์ถœ๋ ฅ

ํ™•์žฅํ•จ์ˆ˜ info๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ ํด๋ž˜์Šค๋ช…๊ณผ ๋ฉ”์†Œ๋“œ๋ช… ์ถœ๋ ฅ

class PopcornPopper{
	fun on() {
        info()
    }
}

fun <T : Any> T.info(): T {
    val res = this
    Throwable().stackTrace[1].apply {
        println("${generateTag()} ${generateMessage(res)}")
    }
    return this
}

fun <T : Any> T.info(msg: () -> Any): T {
    Throwable().stackTrace[1].apply {
        println("${generateTag()} ${generateMessage(msg())}")
    }
    return this
}

fun StackTraceElement.generateTag() = className.substringAfterLast(".")
fun StackTraceElement.generateMessage(msg: Any = "") = "$methodName() Line $lineNumber: $msg"

fun main() {
    val test = PopcornPopper()
    test.on()
}

PopcornPopper info() Line 7: ํ…Œ์ŠคํŠธ

 

 

์ถœ์ฒ˜

discuss.kotlinlang.org/t/currently-executing-method-name-and-line-number/3438/2

 

Currently executing method name and line number

No, there is no API in Kotlin to get the current line number.

discuss.kotlinlang.org